静态加载库文件时编译器提示找不到该文件的一种可能

来源:互联网 发布:spring实战第四版源码 编辑:程序博客网 时间:2024/05/01 02:46

 今天下午遇到了件挺囧的事,平时还真没注意,出现问题后着实困惑,特写在这里

我们知道Dll的调用 方式有两种:动态和静态

(1) 动态调用:typedef int(*lpAddFun)(int, int); //宏定义函数指针类型
lpAddFun add;//函数指针
HINSTANCE hDll=LoadLibrary(“path”);
add=(lpAddFun)GetProcAddress(hDll, "add");//获得dll中的add函数指针
FreeLibrary(hDll);
在从dll调用中返回的函数、指针或者类都是以指针的方式会的,即返回的是函数、变量或类的地址。这里一定要注意,不能简单的用函数名来赋值。
(2) 静态调用:

本文主要说明静态调用时出现的问题,

1.如果将生成的.dll和.lib文件拷入到调用dll的工程中,用命令#pragma comment(lib,"dllTest.lib")或在工程->属性-》链接器-》输入->附加依赖项中写入"dllTest.lib",实现静态调用

2.如果不将生成的.dll和.lib文件拷入到调用dll的工程中,用命令#pragma comment(lib,"C:\\dllTest.lib")(绝对路径)或在工程->属性-》链接器-》输入->附加依赖项中写入"dllTest.lib","dllTest.lib"并在链接器-》常规->附加库目录中填写"C:\",实现静态调用

我在调用的过程中

编译器提示Link:fatal error LINK 1104:无法打开文件"iiliboacw.lib;dllTest.lib"

我出错的原因是"iiliboacw.lib;dllTest.lib",分号的关系,大家知道 在附加目录时多个路径之前用分号隔开,但是在附加依赖项的时候不同文件之间用是用换行符隔开的。

原创粉丝点击