如果我不返回任何内容,或者返回一个整数,那么就可以正常工作。但是如果我尝试返回一个PChar,例如...
result := PChar('') or result:= PChar('Hello')
网页应用程序会卡住,我会在任务管理器中看到它的内存计数逐渐增加。
奇怪的是,该DLL在VStudio调试服务器上或通过C#应用程序正常工作。唯一我能想到的区别就是IIS服务器正在运行64位Windows。
这似乎不是兼容性问题,因为我可以成功地从DLL中写入文本文件和执行其他操作……但我无法返回PChar字符串。
尝试使用PWideChar,尝试返回'something\0',尽我所能尝试了所有方法,但不幸的是没有成功。
[DllImport("TheLib.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
private static extern string SomeFunction();
string result = SomeFunction();
delphi:
library TheLib;
function SomeFunction() : PChar export; stdcall;
begin
return PChar('');
end;
exports
SomeFunction
SysFreeString
吗? - kobikIntPtr
,因此您无法获取本机指针以调用SysFreeString
。 - David Heffernan