我想导入这样的函数:
[return: MarshalAs(UnmanagedType.LPWStr)] [DllImport("DLL.dll",EntryPoint="FuncUtf16",ExactSpelling=true,PreserveSig=true,CharSet=CharSet.Unicode)] public static extern string Func();
“Windows在Test.exe中触发了断点.这可能是由于堆的损坏,这表明Test.exe或其加载的任何DLL中存在错误.”
当我反复按“继续”时,该功能确实给出了预期的输出.但是,当我有机会上述声明时:
[DllImport("DLL.dll",CharSet=CharSet.Unicode)] public static extern IntPtr Func();
(将返回类型更改为IntPtr)并按如下方式调用它:
Dim a As IntPtr = Func() Dim Str As String = Runtime.InteropServices.Marshal.PtrToStringUni(a)
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。