VB.net如何调用C++ DLL,有重谢
如果DLL不是你写的,且你要调用的函数不是__stdcall声明,VB直接调用是会报错的
如果DLL是你写的,注意调用约定问题,并看以下代码
***************************************************
以下是DLL代码
.cpp里这么写
extern "C"__declspec(dllexport) void __stdcall HelloWorld()
{
MessageBox(NULL,"HelloWorld","HelloWorld",NULL);
}
.def里这么写
LIBRARY "XXXX"
EXPORTS
; 此处以下添加
HelloWorld@1
*************************************************
vb里这么写
Public Declare Sub HelloWorld Lib "XXXX.dll" ()
然后调用就可以了,上面是VB的代码,或许VB.net的也差不多
在新建的工程中,add一个module,添加声明函数等代码。
如: Public Declare Function AdvDVP_Start Lib "xxx.dll" (ByVal nDevNum As Long, ByVal SwitchingChans As Long, ByVal Main As Long, ByVal hwandPreview As Long) As Long
Xxx为待测试的c++的dll名称。
主程序,直接使用就好了。
当然,也可以用工具直接从c#转到vb.net
如果目标C++代码是托管的,你直接在引用中选中它就可以了。
如果不是托管的,那么是无法从VB端解决的。必须从C++端完善接口。
换言之,C++代码只有建立了标准接口的(COM)才能在VB.net中使用。
C++ dll 函数如下 ()
bool winapi connectplayserver
(
char* address,
DWORD Port,
DWORD DataPart,
char* Username
);VB.NET 调用方式:
<DllImport(\"Data.dll\")> Private Shared Function ConnectPlayServer(ByVal Address As String, ByVal Port As Integer, ByVal DataPort As Integer, ByVal Username As String) As Boolean
End Function
Private Declare Auto Function a Lib \"Lib.dll\" (ByVal i As Integer) As String2.