将c ++ DLL导入VB.NET

时间:2016-08-23 09:55:27

标签: c++ vb.net visual-studio dllimport

我无法将C / C ++ DLL导入VB.NET项目。在DLL的头文件中,我有以下内容:

IPCONFIG_DLLEXPORT  int     __cdecl     IPConfig_GetDeviceList( __in uint32_t count_buffer_entries, __inout_ecount_opt(count_buffer_entries) IPConfig_Info* buffer_list, __out uint32_t* count_avaialble_entries );

具有以下结构:

typedef struct IPConfig_Info
{
uint64_t    Mac;
char ManufacturerName[64];
char ModelName[64];
char Serialnumber[64];
char UserDefinedName[64];
char ManufacturerSpecificInformation[64];

char AdapterName[64];
char FirmwareVersion[64];

uint32_t    IPAddress;
uint32_t    Subnetmask;
uint32_t    Gateway;
} IPConfig_Info;
在VB方面,我正在这样做:

NotInheritable Class Config_Api
Public Structure IPConfig_Info
    Public Mac As UInt64
    Public ManufacturerName() As Char
    Public ModelName() As Char
    Public Serialnumber() As Char
    Public UserDefinedName() As Char
    Public ManufacturerSpecificInformation() As Char
    Public AdapterName() As Char
    Public FirmwareVersion() As Char
    Public IPAddress As UInt32
    Public Subnetmask As UInt32
    Public Gateway As UInt32
End Structure
<DllImport("ipconfig_api_win32.dll", CharSet:=CharSet.Auto, SetLastError:=True, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function IPConfig_GetDeviceList(ByVal count_buffer_entries As UInt32, <MarshalAs(UnmanagedType.SafeArray)> buffer_list() As IPConfig_Info, ByRef count_avaialble_entries As UInt32) As Integer
End Function
End Class

并用以下方式调用所有这些:

        Dim elements(5) As Config_Api.IPConfig_Info
    Dim availableEntrys As UInt32 = 0
        Dim posresp As Integer = Config_Api.IPConfig_GetDeviceList(nubCam, elements, availableEntrys)

但它不起作用。有谁有个主意。 提前谢谢。

0 个答案:

没有答案