1. 将函数封装进dll文件中:
使用Codeblocks新建一个名为testDll的Dynamic Link Library项目,默认会生成一个.cpp和一个.h文件,里面有基本的代码,修改如下:
main.h
#ifndef __MAIN_H__
#define __MAIN_H__
#i nclude <windows.h>
#i nclude <stdio.h>
#i nclude <stdlib.h>
/**//* To use this exported function of dll, include this header
* in your project.
*/
#ifdef BUILD_DLL
#define DLL_EXPORT extern "C" __declspec(dllexport)
#else
#define DLL_EXPORT extern "C" __declspec(dllimport)
#endif
DLL_EXPORT int addxy( int a, int b )
#endif // __MAIN_H__注意定义DLL_EXPORT的时候要加上extern "C",不然是找不到函数的。
main.cpp:
#i nclude "main.h"
//test here
DLL_EXPORT int addxy( int a, int b )
...{
return (a+b)
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
...{
switch (fdwReason)
...{
case DLL_PROCESS_ATTACH:
// attach to process
// return FALSE to fail DLL load
break
case DLL_PROCESS_DETACH:
// detach from process
break
case DLL_THREAD_ATTACH:
// attach to thread
break
case DLL_THREAD_DETACH:
// detach from thread
break
}
return TRUE// succesful
}
其中函数addxy是我定义亩派禅的测试函数,前面加的DLL_EXPORT声明是main.h中定义的函迅尘数说明。
然后编译类型选Release,编译通过后,在bin/Release目录下羡仿生成了一个testDll.dll的动态链接库文件。如果编译类型选Debug的话,编译出来的函数比较奇怪,这个可以分别从Release和Debug文件夹中的libtestDll.def文件看出来。使用VS2005所带的dumpbin命令可以看出libtestDll.dll的内容:
输入dumpbin /exports testDll.dll可以看到如下输出:
D:My DocumentswxWidgets estcallDll>dumpbin /exports testDll_r1.dll
Microsoft (R) COFF/PE Dumper Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file testDll_r1.dll
File Type: DLL
Section contains the following exports for testDll.dll
00000000 characteristics
477CD664 time date stamp Thu Jan 03 20:34:44 2008
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
10 00001180 addxy
Summary
1000 .bss
1000 .data
1000 .edata
1000 .idata
1000 .rdata
1000 .reloc
1000 .text从中可以看出我们定义的addxy函数。
到此为止,动态库已经完成。
方法1:重新启动电脑有时可能导致找不到或丢失DLL文件错误的问题是暂时的。重启可能是一种选择,只要这样悄芹能解决问题。
方式2:重新安装程序
如果在使用或打开特定应用程序时发生DLL错误,则可能重新安装此程序能够哗运信正确安装并再次注册丢失的DLL文件。但是,在大多数情况下,这种方式效果不佳。
方式3:从回收站恢复已删除的DLL文件
您可能意外删除了DLL文件但尚未实现。结果,发现DLL未找到或丢失DLL等错误。您可以转到电脑中的回收站,并检查这些文件是否保存在此处。如果是这样,请尝试使用“还原”按钮还原它们。但是,如果在回收站中无法查看丢失的DLL文件,您可以做的是向文件恢复软件寻求帮助。
方式4:使用文件恢复软件恢复丢失的DLL文件
如果丢失的文件在删除之前可以正常工作,使用一个免费的数据恢复软件软乱轮件来恢复已删除的DLL文件是一个明智的想法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)