(一)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目录下面,以便程序可以运行!
(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目录下面,以便程序可以运行!
相关文章推荐
- Visual Studio下建立并隐式调用自己的动态链接库dll
- Visual Studio下建立并隐式调用自己的动态链接库dll
- Visual Studio下建立并隐式调用自己的动态链接库dll
- C++对dll链接库的显示(动态)调用和隐式(静态)调用
- C#创建和调用DLL动态链接库
- jsp调用dll动态链接库
- C#中动态调用DLL动态链接库
- Windows 下java调用C++ dll动态链接库
- 在VC++中隐式调用动态链接库
- 生成dll动态链接库后的调用
- VC++显式(静态)调用、隐式(动态)调用及调试DLL
- VC与Matlab混合编程之调用动态链接库dll(C++)——<二>
- 在VS2010中创建和调用动态链接库和静态链接库
- VS2010创建和调用动态链接库
- C语言调用DLL动态链接库出错
- 动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)
- C#调用C++动态链接库之Win32dll(函数)、MFCdll(对话框)
- jni调用DLL动态链接库过程
- Java调用第三方dll动态链接库
- VS2010创建和调用动态链接库