关于C++调用C编写的动态链接库的有关问题
关于C++调用C编写的动态链接库的问题
只有dll,没有.lib或者.h,所以只能显示加载的方式,就是利用LoadLibrary、GetProcAddress的方式来加载动态链接库
那么,需要extern "C" 声明吗?
在哪里声明?
求举个小例子
------解决思路----------------------
不需要。
参考MSDN98\SAMPLES\VC98\MFC\ADVANCED\DLLTRACE\*.*
MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix, MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl
------解决思路----------------------
不要吧!
HMODULE hModule=GetModuleHandle("***.dll"); //打开共享库, 获得句柄
if (hModule)
{
typedef DWORD (CALLBACK *LPFNREGISTER)(DWORD,DWORD);
LPFNREGISTER lpfnRegister;
lpfnRegister=(LPFNREGISTER)GetProcAddress(hModule,"RegisterServiceProcess");
// hModule:共享库句柄, RegisterServiceProcess: 需要加载函数的函数名
if (lpfnRegister)
{
(*lpfnRegister)(NULL,1L);
}
}
这个需要你知道共享库中有什么函数和函数参数, 可以通过工具查看dll中的内容
------解决思路----------------------
不需要
只有dll,没有.lib或者.h,所以只能显示加载的方式,就是利用LoadLibrary、GetProcAddress的方式来加载动态链接库
那么,需要extern "C" 声明吗?
在哪里声明?
求举个小例子
------解决思路----------------------
不需要。
参考MSDN98\SAMPLES\VC98\MFC\ADVANCED\DLLTRACE\*.*
MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix, MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl
------解决思路----------------------
不要吧!
HMODULE hModule=GetModuleHandle("***.dll"); //打开共享库, 获得句柄
if (hModule)
{
typedef DWORD (CALLBACK *LPFNREGISTER)(DWORD,DWORD);
LPFNREGISTER lpfnRegister;
lpfnRegister=(LPFNREGISTER)GetProcAddress(hModule,"RegisterServiceProcess");
// hModule:共享库句柄, RegisterServiceProcess: 需要加载函数的函数名
if (lpfnRegister)
{
(*lpfnRegister)(NULL,1L);
}
}
这个需要你知道共享库中有什么函数和函数参数, 可以通过工具查看dll中的内容
------解决思路----------------------
不需要