新建Win32 Dynamic-Link Library类型的工程DLL1.dll
int add (int a, int b)
{
return a + b;
}
int subtract (int a, int b)
{
return a - b;
}
应用程序如果想要访问某个DLL中的函数,那么该函数必须是已经被导出的函数.
cmd -> dumpbin.exe
cmd -> dumpbin -exports *.dll
为了让DLL导出一些函数,需要在每一个将要被导出的函数前面添加标识符:_declspec(dllexport)
_declspec(dllexport) int add (int a, int b)
{
return a + b;
}
_declspec(dllexport) int subtract (int a, int b)
{
return a - b;
}
新建基于对话框的MFC应用程序DllTest
Project/Settings -> link -> Object/library modules -> DLL1.lib
搜索动态链接库的顺序:
1、程序的执行目录 DllTest/Debug
2、当前目录
3、系统目录 依次是C:/WINNT/system32, C:/WINNT/system, C:/WINNT
4、path环境变量中所列出的路径
dumpbin -imports DllTest.exe
为了查看一个可执行模块依赖的动态链接库,除了用Dumpbin命令外,还可用VS提供的Depends来实现
除了用extern表明函数是外部定义的之外,还可以用_declspec(dllimport)
_declspec(dllimport) int add(int a, int b);
_declspec(dllimport) int subtract(int a, int b);
比起extern,用_declspec(dllimport)声明时,它将告诉编译器该函数是从动态链接库中引入的,编译器可以生成运行效率更高的代码。
本文介绍了如何在DLL中导出函数以及如何在应用程序中导入这些函数。通过示例展示了使用_declspec(dllexport)来导出函数,并使用_declspec(dllimport)来导入函数的方法。此外,还介绍了动态链接库的搜索顺序及依赖检查工具。
3109

被折叠的 条评论
为什么被折叠?



