【发布时间】:2013-07-22 13:39:50
【问题描述】:
我已经搜索了很多关于这个问题的信息,关于如何将字符串从 delphi dll 传递到 .NET 没有明确的答案 接下来的代码基于msdn帮助文件:http://msdn.microsoft.com/en-us/library/4zey12w5.aspx
//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 时,我在“缓冲区”变量中收到一个空字符串。我做错了什么?
提前致谢
【问题讨论】:
-
对我来说很奇怪,你有一个 var 参数用于你试图返回的字符串。我对 VB 一无所知,但在我看来,您已经分配了缓冲区,因此无需从您的 Delphi DLL 返回一个新的 char 指针。但是,我决定不质疑您的设计,并发布了与您当前的 Delphi 代码兼容的答案。
标签: .net vb.net delphi pinvoke