除了看出导入的时候没写明CallingConvention=CallingConvention.Cdecl 以外,暂时没看到更多问题。
有条件最好自己调试一下,就是把DLL那个工程属性里,调试那一栏,启动程序设成C#的exe,然后启动项目设成DLL那个工程,开跑,这样DLL的代码里可以断点啥的(因为是C++工程,所以用这个工程启动调试的话可以调试C++代码),更容易找到错误的地方。
参数定义改一下。
function ss(var num:PChar):Integer stdcall ;
var p:string;
begin
p:='aaa';
StrCopy(@num,@p);
Result:=1;
end;
看错