求好心人写个动态加载dll的代码。。。
时间:2011-12-22
来源:互联网
C/C++ code
// MyDll.h void DLLTest(); class CTest { public: void Test() { MessageBoxA(0, "dll的类成员函数", 0, MB_OK); } }; // MyDll.cpp #include "MyDll.h" void DLLTest() { MessageBoxA(0, "这是dll中的函数", 0, MB_OK); } BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { // .. 略 } // exe // Main.cpp #include <windows.h> #include "MyDll.h" int main() { HINSTANCE hDll = LoadLibrary("dll\\MyDll.dll"); if (hDll == NULL) return 0; CTest test; test.Test(); DLLTest(); FreeLibrary(hDll); return 0; }
哪位好心人可以说一下,还需要做哪些工作啊?,运行起来总是提示找不到dll,main函数都没跑进去- -
作者: weiwuyuan 发布时间: 2011-12-22
作者: ouyh12345 发布时间: 2011-12-22
新建一个dll工程,导出符号就可以了
如果不写导出文件呢?
作者: weiwuyuan 发布时间: 2011-12-22
//DLL内容 extern "C" _declspec(dllimport) int add(int a,int b); int add(int a,int b) { return a+b; } //调用方法 (调用程序和DLL.dll文件要放在同一个文件夹) OnBtnAdd() //调用动态链接库中的Add函数 { HINSTANCE hInst; hInst=LoadLibrary("Dll.dll"); //加载动态库 typedef int (*ADDPROC)(int a,int b); //相当于函数,函数指针类型 ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"add"); //获得函数指针 if(!Add) { MessageBox("获取函数地址失败"); return; } CString str; str.Format("5+3=%d",Add(5,3)); MessageBox(str); FreeLibrary(hInst); //释放动态链接库 }
作者: chinatcp 发布时间: 2011-12-22
作者: liujie250079934 发布时间: 2011-12-22
C/C++ code
//DLL内容
extern "C" _declspec(dllimport) int add(int a,int b);
int add(int a,int b)
{
return a+b;
}
//调用方法 (调用程序和DLL.dll文件要放在同一个文件夹)
OnBtnAdd() //调用动态链接库中……
函数获取失败。..
作者: weiwuyuan 发布时间: 2011-12-22
extern "C" _declspec(dllimport) int add(int a,int b);
改为
extern "C" _declspec(dllexport) int add(int a,int b);
作者: chinatcp 发布时间: 2011-12-22
作者: buyong 发布时间: 2011-12-22
完美解决方案:
1:项目属性-链接器-附加依赖项:..\..\Lib\MyDll.lib
2:项目属性-链接器-延迟加载的DLL:MyDll.dll
3:调用LoadLibrary()加载dll,最后再调用一次FreeLibrary()就行了,其他的任何东西都不需要!
如此简单啊。.........
作者: weiwuyuan 发布时间: 2011-12-22
解决了:
完美解决方案:
1:项目属性-链接器-附加依赖项:..\..\Lib\MyDll.lib
2:项目属性-链接器-延迟加载的DLL:MyDll.dll
3:调用LoadLibrary()加载dll,最后再调用一次FreeLibrary()就行了,其他的任何东西都不需要!
如此简单啊。.........
作者: chinatcp 发布时间: 2011-12-22
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28