您的位置:首页 > 其它

(一)Dll 动态链接 的 隐式调用(VS2010)

2014-03-26 15:31 288 查看
             最近在折腾 生成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目录下面,以便程序可以运行!

           
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vs2010 dll