到目前为止刚刚开始接触DLL(Dynamic Link Library),一边看书,一边创建了一个DLL文件,然后进行了Dll文件的使用,具体操作以及代码如下:
1、CreateDll工程的创建,工程类型为win32下的DLL类型
生成的程序入口函数为:
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
在CreateDLL.cpp下添加如下代码:
extern "C" __declspec(dllexport) void HelloWorld()
{
std::cout<<"HelloWorld"<<std::endl;
}
extern "C"说明是用C语言的方式去解析代码
__declspec(dllexport),导出 DLL 函数,向导出的 DLL 函数中添加函数关键字
2、进行代码的编译,查看Degbug目录下生成CreateDll.dll文件。
3、新建工程TestDllLoad对已经生成的CreateDll文件进行测试,新建过程类型为win32控制台应用程序,只需要在_tmain()函数下添加代码如下:
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE hInst;
typedef void (*FUN) ();
FUN fun;
hInst = LoadLibrary(_T("..\\..\\CreateDll\\Debug\\CreateDll.dll"));
fun = (FUN) GetProcAddress(hInst,"HelloWorld");
fun();
system("pause");
return 0;
}
LoadLibrary函数原型HMODULE WINAPI LoadLibrary( _In_ LPCTSTR lpFileName),用于导入相应的Dll;
GetProcAddress函数原型 FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName),利用导入Dll的句柄和相应应用的函数名得到函数的入口地址;
需要注意的是Dll文件的相对目录,目录问题导致的很多问题。
详细的代码见我的资源 http://download.csdn.net/detail/huijun_liu/5332510