c++ 如何使用第三方的library

感谢以下参考资料:

  关于如何使用第三方的库:

    http://stackoverflow.com/questions/21942545/how-to-install-third-party-libraries

    http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/

    http://forums.codeblocks.org/index.php?topic=9366.0

  关于编译静态库或者动态库:

    http://www.cnblogs.com/woainilsr/archive/2013/07/10/3182891.html

正文:

IDE:CodeBlocks,编译器:MinGW GNU GCC

步骤如下:

1. 把tinyxml指定的需要包含的头文件放入名为include的文件夹中
2. g++ -c *.cpp // 把所有 cpp 文件编译为 o 文件,但是不进行链接,并把所有 o 文件放到名为obj的文件夹中
3. ar -r tinyxml.a *.o // 把 o 文件 打包成库文件(后缀名通常为 a 或者 lib),以后你的Project进行构建的时候 Linker 用来 链接成 exe的时候用。 把tinyxml.a放入名为lib的文件夹中
4. 打开你的项目 选择 Project > Build Options
  4.1 选择 Linker settings >
    4.1.1 对 Link libraries 点击 Add,把目录:F:\cpp_libs\tinyxml\lib\tinyxml.a 添加进去
  4.2 选择 Search directories >
    4.2.1 选择 Compiler >

      4.2.1.1 选择 Add >
      4.2.1.2 拷贝tinyxml的头文件的路径:F:\cpp_libs\tinyxml\include // 这是告诉Compiler去哪里找头文件,Compiler编译你的项目的时候需要库的头文件
    4.2.2 选择 Linker >
      4.2.2.1 添加 o 文件所在的路径:F:\cpp_libs\tinyxml\obj // 这一步不是必须的,如果你已经将 o 文件打包成为 a 文件或者 lib 文件(也就是步骤4.1),就无需这一步了

5. 你的项目包含tinyxml的头文件,并编译执行即可,如下

  注意这里使用的是<tinyxml.h>而不是"tinyxml.h",这是告诉预处理器到IDE指定的Search directories去找头文件,而不是在这个项目的目录下找。

main.cpp

#include <iostream>
#include <tinyxml.h>

using namespace std;

int main() {
    const char *CFG_FILE= "E:/myprojects/test/config.xml";
    TiXmlDocument doc(CFG_FILE);
    if(!doc.LoadFile()) {
        std::cout << "Unable to open " << CFG_FILE << std::endl;
        return 1;
    }
    TiXmlNode *root = doc.RootElement();
    const char *input_file =
        root->FirstChild("input-file")
        ->ToElement()
        ->GetText();
    cout << input_file << endl;
    return 0;
}

config.xml

<config>
    <input-file>sample.txt</input-file>
</config>

运行结果:

sample.txt

总结,使用第三方库的方法(假定库名为FOO):

1、编译FOO的cpp文件(连同需要的h文件)一起编译为o文件

2、将o文件打包为a文件或者lib文件

3、为你的项目导入该a文件或者lib文件

4、为你的项目指定FOO库所需要的头文件的目录

5、编译你的项目,大功告成

时间: 2024-08-06 03:42:05

c++ 如何使用第三方的library的相关文章

android ant 自动批量打包——带有第三方项目library的情况

如果你每次打包都需要不断地手动打包,通过不断地复制粘贴,当你打几百个包的情况下,我相信你一定会疯掉的,当然,这种事情在我们程序员看来,都是可以解决的事情,因为,我们的工作就是让本来繁琐的工作变得简单一点.今天我们就需要简单地介绍一下ant批量打包的问题吧. 网上看到的资料各有千秋吧,现在是时候做一个总结,站在各位大神的肩膀上我们才能够看得更加远. 首先你应该去官网上面下载apache-ant的最新版,我这边使用了一个apache-ant-1.9.4,这是当前的最新版的,现在附上下载链接--可以去

android ant 自动批量打包——带有第三方项目library的情况(补充运行)

上一篇blog忘记写怎么运行了,现在向大家补上-- 上面是我的项目目录,其实大家可以看到有build.xml 下面右击build.xml 接下来就可以运行了,等待一会儿,打工告成啊,祝大家好运哈.

ubuntu下python安装第三方库(library)的简易方法

安装个easy_install工具 sudo apt-get install python-setuptools 然后sudo就OK了 比如Ubuntu下Python读写excel库 sudo easy_install xlrd sudo easy_install xlwt sudo easy_install xlutils 使用: import xlrd import xlwt import xlutils

网上搜集第三方(二)

這是我收集了一些第三方的 Library,大部份都還沒用過Orz,只是這樣整理以後要用到的時候會比較好找到. UI UI Design alertView Menu(選單) Side ViewController UICollectionView Segment Control Others 動畫 影像特效 模糊.毛玻璃效果(Blur) 畫面轉換 各種統計圖表 Line Bar Pie Others Pull To ReFresh Notification Auto Layout Data St

[Linux]流媒体服务器概述

二.何为流媒体与流式传输? 2.1 流媒体 「流媒体」是指采用「流式传输」的方式在Internet播放的媒体格式,流媒体最大的特点就是「边下边播」,常用的流媒体格式有FLV(使用FLASH作为视频播放载体).TS等 2.2 流式传输 「流式传输」指通过网络传送流媒体的技术总称.流式传输分为「实时流式传输」与「顺序流式传输」.一般来说,如果视频为直播,即为实时流式传输.如果视频不是直播,文件通过顺序流发送,即为顺序流式传输. 三.何为解复用? 「解复用」是指从「音频视频信号源」中分流出「单独的音频

深入了解Bundle和Map

转载自: http://www.devtf.cn/?p=120 https://medium.com/the-wtf-files/the-mysterious-case-of-the-bundle-and-the-map-7b15279a794e 原文链接 : The mysterious case of the Bundle and the Map 前言 因为往Bundle对象中放入Map实际上没有表面上看起来那么容易. 这篇博客是在Eugenio @workingkills Marletti

tab界面实现方式之ViewPager+TabPageIndicator

今天我来说说ViewPager+tabPageIndicator来实现tab界面.首先tabPageIndicator是在第三方的library包里面-- viewPagerlibrary,在githup上可以下载,我们需要将它导入eclipse中,然后在关联它.当我们使用这个包的时候,有一个问题需要注意:可能主工程中会报错,但是我们又不知道是哪里错了,最好看看libs下的v4包,一定要保证主工程和library中的v4包要么一模一样,要么只有一个,所以要么将其中一个v4包用另一个v4覆盖,或者

整理的Unity导出安卓工程利用ANT进行多渠道批量打包APK

Unity导出的安卓工程利用ant进行多渠道循环批量打包 一:设置JAVA环境变量 做android开发的配置这个是基础. win7 下配置java环境变量,下面是链接 http://www.cnblogs.com/zhj5chengfeng/archive/2013/01/01/2841253.html 二:配置Android的SDK环境变量 除了需要Java的环境变量,我们还需要配置Android的sdk的位置,名字是ANDROID_HOME,值就是你的android的sdk的位置,比如我的

移动平台开发技术所需技能汇总

精通Java(Scala).C.C++ 熟悉常用的数据结构和算法 一门脚本语言 Python等: 理解面向对象设计的基本原则,熟悉常用的设计模式: 精通 NDK 编程 JNI 开发: 插件式App开发:熟练使用git版本控制工具: 熟悉常用第三方Android Library的使用:熟悉机型适配:熟悉Android缓存.内存优化: 熟练掌握Java高级特性编程; 了解HTML5,JS等前端技术: 熟悉 Android SDK, Android知名开源项目源码 ,研究阅读过 Android 系统的