0

我有以下用非托管 c++ 编写的函数,我想从 VB.net 代码中调用它。对我来说主要问题是该函数要求将第一个参数作为指针传递。而在 Visual basic 中,我们没有像 c++ 这样的指针。

那么如何从 vb.net 调用这个函数呢?

__declspec(dllexport) void __stdcall setup(char *name, int &maxchars) 
4

2 回答 2

1

在这里查看数据类型的映射。

    Imports System.Runtime.InteropServices;
    Declare Auto Sub setup Lib "xxx.dll"
(ByVal  name as String, ByRef maxchars as Integer)`.
于 2013-05-22T09:33:40.617 回答
0

我会像这样 p/invoke 它:

Imports System.Runtime.InteropServices
....
<DllImport("MyLib.dll", CharSet:=CharSet.Ansi)> _
Private Sub setup(ByVal name As String, ByRef maxchars as Integer)
End Sub

您需要指定字符集是ANSI因为 C 代码接收char*. 您不需要指定调用约定,因为默认值stdcall与本机代码匹配。

于 2013-05-24T14:19:19.633 回答