码迷,mamicode.com
首页 > 其他好文 > 详细

VS编译器如何调用动态链接库文件

时间:2019-12-26 12:57:52      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:sys   wrapper   自己   api   aaaaaa   命令   ret   code   链接器   

在我们日常的开发中,难免要使用别人封装的第三方库;那么接下来就跟着我一步步学习如何在VS编译器中调用第三方库吧。

我自己封装了一个简单的dll文件;函数如下所示:

头文件(.h) #ifndef _MYDLL_H

#define _MYDLL_H

#ifdef MYDLL_EXPORTS
#define  MYDLL_API __declspec(dllexport)
#else
#define  MYDLL_API __declspec(dllimport)
#endif 

extern "C" MYDLL_API int add(int a, int b);

#endif
源文件(.cpp)
#include "mydll.h"

extern "C" MYDLL_API int add(int a, int b)
{
    return (a + b);
}

 

编译成功后生成后,将.h文件,dll文件,lib文件拷贝出来放在同一个文件中,那么接下来就是如何正确的去使用dll文件了。

首先创建一个空白项目后,将上述的文件夹拷贝到该项目下,如下所示:

技术图片技术图片?

内部结构如下图所示:
技术图片技术图片?

dll文件夹用来存放dll文件,include文件夹用来存放头文件,lib文件夹用来存放lib文件;接下来右键点击项目->属性->常规,弹出如下界面:

技术图片技术图片?

点击编辑,将第三方库中的头文件路径包含进去,如下所示:

技术图片技术图片? 这样的话,头文件的路径就已经配置完成了,接下来就是如何配置lib文件的路径了,点击链接器->常规

技术图片技术图片?

选中附加库目录,将lib文件的路径包含进去, 

技术图片技术图片?

 之后就是考虑如何把lib文件加载进来了,这个简单,点击链接器->输入之后,将库文件输入进去即可,如下图所示:

技术图片技术图片?

技术图片技术图片?

最后需要把dll文件拷贝到运行工作目录中,即exe运行文件所在目录,你可以手动拷贝,也可以在生成事件->后期生成事件中添加拷贝命令,如下所示:

技术图片技术图片?

那么调用动态链接库的整个流程就已经全部搭建完成了, 需要提一下的是,我这边的文件都是根据相对路径去获取的,这样的话,当库文件路径发生改变时,不易出错,如果你想用绝对路径,那当然也是可以的。有兴趣的可以尝试一下。那么接下来就是如何在代码中调用库文件中的函数了,这个时候,头文件就显得举足轻重了,首先把头文件包含进来,之后,便可以直接调用库函数了。代码如下所示:

#include <iostream>
#include "mydll.h"

using namespace std;


int main()
{
    int nNum1 = 10;
    int nNum2 = 20;
    int nSum = add(nNum1, nNum2);

    cout << "调用库函数的nSum = " << nSum << endl;

    system("pause");
    return 0;
}

运行得到的结果如下图所示:

技术图片技术图片?

VS编译器如何调用动态链接库文件

标签:sys   wrapper   自己   api   aaaaaa   命令   ret   code   链接器   

原文地址:https://www.cnblogs.com/QingYiShouJiuRen/p/12101398.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!