只有.h文件和.dll文件,没有lib文件,如何调用dll文件中的函数?
问题:
只有.h文件和.dll文件,没有lib文件,如何调用dll文件中的函数?
现实情况:
现有文件:RFIDAPIEXPORT.h 和RFIDAPI.dll,其中的一个函数为例:
函数SAAT_TCPInit在头文件中的声明:
extern "C" bool RFID_API __stdcall SAAT_TCPInit(void** pHandle,char *pHostName,int nsocketPort);
尝试办法1:
在网上查了通过dumpbin生成lib文件的方法,但是,生成的def文件中,大多数函数为XCTCPInit形式,生成lib文件后,链接时出错:
Linking...
rfid.obj : error LNK2001: unresolved external symbol __imp__SAAT_TCPInit@12
Debug/RFID.exe : fatal error LNK1120: 1 unresolved externals
使用dumpbin导出dll的def文件中,这个函数对应的名字应该是:XCTCPInit
尝试办法2:
利用GetProcAddress函数指定动态连接库。
我的代码:
HINSTANCE hDllInst = LoadLibrary("RFIDAPI.dll");
if(hDllInst)
{
//typedef bool (*MYFUNC)(void** pHandle,char* pHostName,int nsocketPort);
typedef bool (*MYFUNC)(void** ,char* ,int );
MYFUNC TCPInit = NULL; // 函数别名
TCPInit = (MYFUNC)GetProcAddress(hDllInst, "SAAT_TCPInit");
if (TCPInit==NULL)
{
cout<<"error!"<<endl;
}
.....
运行输出: error 也就是说,GetProcAddress返回空,试了将SAAT_TCPInit改为XCTCPInit,运行结果一样。
请问,为什么找不到这个函数?如何才能调用呢?