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


    在我们日常的开发中,难免要使用别人封装的第三方库;那么接下来就跟着我一步步学习如何在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;
    }

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

  • 相关阅读:
    解决JS修改backgroundimage时图片闪烁
    ubuntu下如何设置PageUp/PageDown键调出使用过的历史命令
    基于GitLab的Code Review教程
    换源后aptget安装包的时候,经常报错缺少依赖关系
    [Python] 通过md5去重 筛选文件代码
    国内vps优化github访问速度
    docker更换镜像源,加速网络拉取
    家用路由器开启 IPV6, wifi 访问变慢甚至打不开网页?
    linux调试信息重定向到文件日志的分割 对文件进行重命名操作不会切断程序与重定向文件之间的联系
    PostgreSQL数据库建表设置主键自增字段
  • 原文地址:https://www.cnblogs.com/QingYiShouJiuRen/p/12101398.html
Copyright © 2020-2023  润新知