最近在折腾 生成Dll并调用 它 这件事, 我们知道 如果动态链接中 有隐式调用 和显示调用 ,其中隐式调用中 我们需要将.lib给添加到工程去,那我们可以有如下方法:
(1) 放在工程 属性->链接器->输入->添加依赖项 中直接添加.lib文件,注意,不是目录,是文件!不需要调用代码语句。
(2)还可以在 VC++目录下面的 库目录 下面 设置 .lib文件的路径,然后在代码中添加#pragma comment ( lib , "XX.lib") (XX.lib为.lib文件名);
(3) 当然也可以放在工程目录下,然后再添加#pragma comment ( lib , "XX.lib");
(4)也可以在工程附近新建一个目录LIB(随便什么名字),然后在VC++目录->库目录中设置这个文件夹的路径,然后再添加#pragma comment ( lib , "XX.lib");
(5) 也可以直接右键点击工程 然后在“添加现有项”中找到.lib文件,确定即可;不需要调用代码语句。
但是如果我在VC++目录下面 的引用目录 或者 包含目录 添加 .lib 的路径 然后再 在代码中添加#pragma comment ( lib , "XX.lib"),程序提示找不到.lib 。这个问题我表示没法理解,所以希望知道的大侠们 多多指点!小弟必感激不尽!
另外,因为我们知道程序要跑起来 经历 预处理 编译 链接 运行,所以:
第一,要通过预编译 编译(compile) 那么 我们不要忘了 在调用Dll接口函数时 要记得在调用工程中添加相关函数的.h文件(如果有的话),要是没有,那就直接申明 ,有几种方法:
(1 ) extern int add ( int plusOne, int plusTwo );
(2 ) _declspec(dllimport) int add( int plusOne, int plusTwo );
第二,要通过 链接(link) ,我们这个时候 需要知道 这个外部的函数具体在哪实现的,也就是在dll中的地址等信息;这个时候我们就要添加.lib库文件,它包含了Dll里面所有函数的地址信息;但是这个时候其实dll里面的函数 具体的实现还是没有执行起来,也就是我们现在只是把函数地址信息给他了。
第三,之后我们要能运行起来,这个时候就要加载Dll中的 函数了,要真正的执行其中的具体实现语句,这个时候 我们就需要Dll文件,所以呢,在Debug阶段 我们可以将dll放在Debug目录下面,以便程序可以运行!