环境:VS2010
设置:.dll与.exe在同一个目录下
问题:LoadLibrary(_T("***.dll"));返回空句柄
dll调用代码:
#include "stdafx.h"
#include "math.h"
typedef IMath*(*INSTANCE)( );
IMath* GetMath(){
HINSTANCE hDll=LoadLibrary(_T("DLLInterface.dll"));
INSTANCE instance=(INSTANCE)GetProcAddress(hDll,"CreateInstance");
DWORD dwErr=GetLastError();
Sleep(10000);
IMath* math=instance();
// FreeLibrary(hDll);
return math;
}
int _tmain(int argc, _TCHAR* argv[])
{
IMath* math=GetMath();
int sum=math->Add(12,34);
printf("%d\n",sum);
return 0;
}
问题原因:
要将项目属性->配置属性->连接器->输入->模块定义文件-----设置为./DLLInterface.def
Note:
项目属性->配置属性->常规->中间目录-------存放pdb调试文件
项目属性->配置属性->连接器->常规->输出目录------存放可执行文件