我已经搜索了很多关于这个问题,有关于如何通过从德尔福DLL中的字符串.NET 接下来的代码没有明确的答案是基于MSDN帮助文件:http://msdn.microsoft.com/en-us/library/4zey12w5.aspx传递字符串到.NET
//Delphi code
function myDelphiFunc(var Buffer: PChar): Integer; export; stdcall;
Buffer:='this is a test';
Return:=0;
end;
//vb.NET code
<DllImport(path)> _
Public Function myDelphiFunc(ByVal buffer As String) As Integer
Public Sub myNETFunc()
Dim buffer_size As integer = 25
Dim buffer As String = New String(CChar(" "), buffer_size)
Call myDelphiFunc(buffer)
MsgBox(Strings.Left(buffer, InStr(buffer, Chr(0)) - 1))
End Sub
调用myDelphiFunc时,我在“buffer”变量中收到一个空字符串。我究竟做错了什么?
在此先感谢
It's怪我,你的字符串找你试图返回一个变量参数。我对VB一无所知,但在我看来,你已经分配了缓冲区,所以不需要从你的Delphi DLL中返回一个新的字符指针。不过,我决定不要质疑你的设计,并发布一个与你目前的Delphi代码兼容的答案。 – AlexSC