zoukankan      html  css  js  c++  java
  • C/C++ 开发中使用第三方库常见问题总结

    本篇包含linux 与 windows 下动态编译问题,不涉及静态编译问题。

    c++/c 编程中通常会经历:编译,链接和运行。

    编译:

    *.cpp/*.c --> .o //源文件生成obj文件

    除了语法错误以外,包含相应的头文件即可编译通过。

    #windows: visual studio
    项目-->属性--> VC++目录-->包含目录-->添加相应的目录
    
    #linux 
    g++ ...  -Ipath1 -Ipath2  ...

     当然,系统可以配置一些默认包含目录。

    链接:

    将obj文件链接起来,并链接一些其他库中的obj文件。

    windows 下的连接文件:*.lib

    linux 下的链接文件:*.so (shared object)。被称之为共享函数库,在链接和程序运行时都需要用到

    1 windows visual studio

    1 项目-->属性-->VC++目录-->库目录-->添加相应的目录
    2 项目-->属性-->链接器-->输入-->附加依赖项-->添加相应库的文件名字

    2 linux g++/gcc

    -L LIB_PATH -l<libname> #libname 是*.so 文件去掉前缀lib和.so的名字 
    

    linux 下默认链接库路径:

    LIBRARY_PATH 
    
    #注意和LD_LIBRARY_PATH的区别,LIBRARY_PATH是在编译时需要的,
    #LD_LIBRARY_PATH是在运行时需要的。
    
    #添加方法三种:
    1、当前shell有效: export $LIBRARY_PATH:<your path>
    2、当前用户有效: 将上面一局写入 ~/.bashrc; source ~/.bashrc #激活

    运行:

    基本思想:exe文件要能找到相应的 dll 文件或者 .so 文件。

    1. 将所有的dll或者so文件copy到exe文件所在目录下,注意:运行时的工作目录不在这个文件下也是会出错的,如/root/<dst to path>/*.exe ,会报找不到.so文件或者dll文件。
    2. 将dll或者so文件copy到系统目录中,c:windowssystem* 或者 /usr/lib 等。
    3. windows下添加环境变量,linux 添加LD_LIBRARY_PATH,方法与LIBRARY_PATH 相似, 也可以添加到/etc/profile 里, 参考 这里
  • 相关阅读:
    pandas DataFrame(5)-合并DataFrame与Series
    pandas Series的sort_values()方法
    np.corrcoef()方法计算数据皮尔逊积矩相关系数(Pearson's r)
    switch case 多个处理方式涉及到销售优惠折扣方案处理
    标量函数取规则名称
    调用企业微信接口发送消息
    C#中NameValueCollection类用法 读取配置信息
    .NET Datable分解数据表
    触发器批量业务操作实现方式 update触发器用游标处理
    Lamda OrderBy 排序问题
  • 原文地址:https://www.cnblogs.com/walter-xh/p/10596124.html
Copyright © 2011-2022 走看看