我无法将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)
但它不起作用。有谁有个主意。 提前谢谢。