动态链接库DLL创建和使用

来源:互联网 发布:动态表单数据库设计 编辑:程序博客网 时间:2024/05/21 06:59

到目前为止刚刚开始接触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

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 8个月宝宝吃了纸怎么办 宝宝出生两天了不吃不喝怎么办 八个月宝宝阴唇边红肿痛怎么办 儿童五周岁九个月比同龄矮怎么办 8个月宝宝长牙母乳喂养咬人怎么办 6周的孩子视力低常怎么办 宝宝吃了甜食生痰咳嗽怎么办 两个月的边牧抵抗力差怎么办 阴茎勃起后向上翘的厉害怎么办 5个月宝宝发烧38.5度怎么办 9个月宝宝发烧38.5度怎么办 八个月宝宝只吃母乳不吃奶粉怎么办 八个月母乳不够宝宝不吃奶粉怎么办 八个月宝宝吃母乳不吃奶粉怎么办 八个月宝宝戒奶不吃奶粉怎么办 刚满月的宝宝发烧38度怎么办 未满月的宝宝发烧38度怎么办 半月大的婴儿吃奶就漾奶怎么办 上司交给你不能完成的任务怎么办 电脑光驱里放入光碟放不出来怎么办 黑暗之魂3太难了怎么办 苹果手机下载的游戏闪退怎么办 宝宝两岁了不怎么爱拉大便怎么办? 小狗脖子发硬疼的直叫怎么办 厨房里有很多小虫子围着鸡蛋怎么办 狗生小狗后几天不吃饭怎么办 还没满月的小兔子突然死了怎么办 宝宝小鸡被蚊子咬后肿得很大怎么办 不知道是哪知兔子下的小兔怎么办 兔子生完小兔不吃东西了怎么办 人工喂养七天的小羊拉希怎么办 仔兔出生3天吃过奶就尿怎么办 小兔子买回来两天不拉屎怎么办 大狗生了小狗把小狗咬死了怎么办 狗妈妈一直咬小狗的脐带怎么办 狗狗体内驱虫驱不干净怎么办 打老鼠脚被老鼠咬了怎么办 天正画的cad打开显示空白怎么办 苹果手机信息被拉进群聊怎么办 空调的控制线的报验资料怎么办 窗窗户罩子护栏上的瓦楞板怎么办