zoukankan      html  css  js  c++  java
  • 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 inyxmllib inyxml.a 添加进去
      4.2 选择 Search directories >
        4.2.1 选择 Compiler >

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

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

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

    注意:步骤4.1可以替换为如下操作,效果是一样的,4.1的操作是添加单个的库文件,而这个操作是添加库文件的搜索路径

        选择 Search directories > 选择 Linker > 添加F:cpp_libs inyxmllib

        这样Linker就能找到tinyxml.a了,事实上,Linker能找到目录F:cpp_libs inyxmllib下的任何库文件

    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

    项目地址(不含源代码):http://pan.baidu.com/s/1o6BNqY2

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

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

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

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

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

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

  • 相关阅读:
    HDU 4024 Dwarven Sniper’s hunting(数学公式 或者是二分)
    二分图最大匹配总结
    HDU 4022 Bombing (STL应用)
    HDU 1847 Good Luck in CET4 Everybody!(组合博弈)
    HDU 1556 Color the ball(树状数组)
    HDU 4023 Game(博弈)
    HDU 1406 完数(水题)
    HDU 4021 24 Puzzle
    Oracle 多表查询优化
    【编程之美】字符串移位包含的问题(续)
  • 原文地址:https://www.cnblogs.com/qrlozte/p/4100892.html
Copyright © 2011-2022 走看看