1.隐式链接
步骤一: 将.dll .lib文件放到工程目录下
在之前使用dll时我们根本没使用.lib文件,因为函数根本不在他里面。他不是静态链接库里的lib文件。
但是这里面有着辅助信息,所以我们要使用隐式链接的话就要使用他,来让编译器找到dll。
步骤二:将 #pragma comment(lib,"lib名.lib")添加到调用文件中
步骤三:加入函数声明(也可以把dll头文件放到目录下)
注意:
extern "C" _declspec(dllexport) ... ... ... ...
当我们使用上面这种方式的时候别忘了在函数声明时前面加上extern "C"
_declspec(dllimport) int add(int x, int y);
示例代码:
#include <stdio.h>
#include "StdAfx.h"
#include <Windows.h>
#pragma comment(lib,"Dll1.lib")
_declspec(dllimport) int add(int x, int y);
int main()
{
int x = add(1, 2);
printf("%d", x);
return 0;
}
注意:我在尝试的时候出现一个(无法找到dllmain.dll,程序无法运行)的错误。因为我放到该目录下的dll名字为dll1.dll但是他说无法找到dllmain.dll所以我改了下名字就可以正常运行了。
<
本文详细介绍了Windows环境下隐式链接DLL的过程,包括将DLL和LIB文件放入工程目录、添加#pragma comment(lib)、函数声明等步骤,并探讨了隐式链接的实现原理,涉及导入表(IAT)、DLLMain函数的执行情况。同时,讨论了DLL的优点,如节省内存,以及DllMain在DLL生命周期中的不同调用场景。
最低0.47元/天 解锁文章
1411

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



