DLL导入方式
一、__declspec(dllimport)与__declspec(dllexport)相呼应
二、LoadLibrary、GetProcAddress方式
方式一、__declspec(dllimport)
1、此方式与__declspec(dllexport)相对应,一般有如下定义:
#ifdef DLLWRAP_EXPORTS
#define DLLWRAP_API __declspec(dllexport)
#else
#define DLLWRAP_API __declspec(dllimport)
#endif
因此只要不定义DLLWRAP_EXPORTS即可
2、把生成dll对应的lib文件作为依赖库,exe运行时将自动链接dll。
方式二、LoadLibrary、GetProcAddress
1、LoadLibrary(dllName)
2、从dll获取函数指针,然后调用。
typedef void (*pfn)(void);
HMODULE pDllHandle = ::LoadLibrary(szDllFile);
if(pDllHandle != NULL)
{
pffunc = (pfn)GetProcAddress(pDllHandle, szFunctionName);
if( !pfCreateDataAgent )
{
FreeLibrary(pDllHandle);
}
}