如何制作DLL? 如何制作DLL? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 按照以下步骤来完成:1)先来建立DLL。在VC菜单中File->New新建一个命名为ExplicitDLL的Win32 Dynamic-Link Library工程,下一步选择A simple DLL project。可以看到VC的AppWizard为我们准备了一个DllMain函数,本例中我们不用去改动它。2)在ExplicitDLL.cpp之中添加两个函数foo1和foo2,代码如下: void foo1(){ MessageBox(NULL,"Called foo1 by function name!",NULL,MB_OK);}void foo2(){ MessageBox(NULL,"Called foo2 by function ordinal!",NULL,MB_OK);}3)在VC菜单中File->New新建一个命名为ExplicitDLL.def的Text file,VC会自动将它加入到工程之中。在ExplicitDLL.def之中添加如下代码: LIBRARY ExplicitDLL EXPORTS foo1 @1 foo2 @2 在这里,我们使用了模块定义文件(.def)的方式导出了2个函数。4)编译工程,生成ExplicitDLL.dll。5)在来建立调用程序。在VC菜单中File->New新建一个命名为UseExplicit的Win32 Console Application工程,下一步选择a simple application。并将ExplicitDLL.dll这个文件复制到工程目录内的Debug文件夹之中。6)在UseExplicit.cpp之中包含windows.h头文件,并且在main函数之中添加如下代码: typedef void (*foo1PROC)(void); typedef void (*foo2PROC)(void); HMODULE hDLL; foo1PROC ProcFoo1; foo2PROC ProcFoo2; hDLL = LoadLibrary("ExplicitDLL"); if (hDLL != NULL) { ProcFoo1 = (foo1PROC) GetProcAddress(hDLL, "foo1"); if(!ProcFoo1) MessageBox(NULL,"Call foo1 error!",NULL,MB_OK); else ProcFoo1(); ProcFoo2 = (foo2PROC) GetProcAddress(hDLL, MAKEINTRESOURCE(2)); if(!ProcFoo2) MessageBox(NULL,"Call foo2 error!",NULL,MB_OK); else ProcFoo2(); FreeLibrary(hDLL); } else MessageBox(NULL,"Load ExplicitDLL.dll error!",NULL,MB_OK);7)编译运行UseExplicit.exe,可以看到两个弹出对话框,程序运行成功。 QQ群:30112476 欢迎加入 求异步套接字TCP通信模型 关于结构体的一维数组的动态定义 如何实现嵌套对话框 RUNTIME_CLASS 问题请教 TOP托普万岁! OutLook Automation:想得到OutLook的接口,可总出错!帮帮忙呀! 》》》快来抢100分:如何改变属性页中tab标签的颜色,可以给它设置一个背景小图片吗?注意不是Page的颜色,仅是那个tab标签的颜色。答案可行立刻给分! opencv三维直方图//输出值是什么意思? 关于多线程 请问如何用vc程序来判断系统的类型2K或XP 喜欢网络编程的朋友,欢迎加入网络开发高手群! 3266923
{
MessageBox(NULL,"Called foo1 by function name!",NULL,MB_OK);
}void foo2()
{
MessageBox(NULL,"Called foo2 by function ordinal!",NULL,MB_OK);
}3)在VC菜单中File->New新建一个命名为ExplicitDLL.def的Text file,VC会自动将它加入到工程之中。在ExplicitDLL.def之中添加如下代码: LIBRARY ExplicitDLL
EXPORTS
foo1 @1
foo2 @2 在这里,我们使用了模块定义文件(.def)的方式导出了2个函数。4)编译工程,生成ExplicitDLL.dll。5)在来建立调用程序。在VC菜单中File->New新建一个命名为UseExplicit的Win32 Console Application工程,下一步选择a simple application。并将ExplicitDLL.dll这个文件复制到工程目录内的Debug文件夹之中。6)在UseExplicit.cpp之中包含windows.h头文件,并且在main函数之中添加如下代码: typedef void (*foo1PROC)(void);
typedef void (*foo2PROC)(void);
HMODULE hDLL;
foo1PROC ProcFoo1;
foo2PROC ProcFoo2;
hDLL = LoadLibrary("ExplicitDLL");
if (hDLL != NULL)
{
ProcFoo1 = (foo1PROC) GetProcAddress(hDLL, "foo1");
if(!ProcFoo1)
MessageBox(NULL,"Call foo1 error!",NULL,MB_OK);
else
ProcFoo1();
ProcFoo2 = (foo2PROC) GetProcAddress(hDLL, MAKEINTRESOURCE(2));
if(!ProcFoo2)
MessageBox(NULL,"Call foo2 error!",NULL,MB_OK);
else
ProcFoo2();
FreeLibrary(hDLL);
}
else
MessageBox(NULL,"Load ExplicitDLL.dll error!",NULL,MB_OK);7)编译运行UseExplicit.exe,可以看到两个弹出对话框,程序运行成功。