我已经获得了一些 C++ 代码来使用 TinyXML 解析器。但是,要做到这一点,我必须将 TinyXML 的源代码包含在我的常规源代码中。我想将 TinyXML 作为一个单独的库包含在内。我将 Eclipse 与 Cygwin C++ 编译器一起使用。有什么好方法可以做到这一点?
问问题
9282 次
2 回答
4
我假设您想将库与您自己项目的源代码分开......但是当库不在同一个文件夹中时,您不知道如何构建。
假设您的库已预编译 *.lib 和 *.h 文件:
- 将库源代码移动到单独的目录
- 菜单栏“项目”
- 菜单“属性”会打开一个对话框,所有项目的属性都会在左边有一个列表。
- 列表项“C/C++ Build”将更改 GUI 并向您显示 gcc 的编译器/链接器/汇编器的所有选项(我从不进行汇编......所以我从不使用汇编器做任何事情)。[1]
- GCC C 编译器 --> 目录:
- 绿色加号图标 [2] --> 指定 *.h 文件的路径
- 您的编译器现在应该很高兴(但是您将无法链接,因为链接器不知道每个函数的实际定义是什么)
- GCC C 链接器 --> 库:
- 库搜索路径 (-L) --> 绿色加号图标 --> 指定 *.lib 文件的路径
- 库 (-l) --> 绿色加号图标 --> 指定您正在使用的每个库的名称
- 您的链接器现在应该很高兴并且您的代码应该可以编译
[脚注 - 1] GUI C/C++ 构建窗格是 gcc 的命令行编译器/链接器的包装器......它只是让它更易于使用,因为它可以直观地显示所有内容。
[脚注 - 2] '+' 图标将告诉编译器您的库 *.h 包含文件所在的位置。编译器需要 *.h 文件才能在编译之前知道您的库具有哪些函数原型。
假设您有实际的(未编译的)*.c 和 *.h:
- 除第 7 步外,执行上述相同步骤。
- 在第 7 步,您需要确保库的 *.c 文件可以被 Eclipse 的“托管生成”看到。如果它没有看到源代码,那么您需要指定源代码的位置以便编译它。
于 2009-04-25T18:20:05.730 回答
2
这基本上很容易。您为库编译源代码,并使用ar(1)构建库。是的,令人惊讶的是,图书馆只是一个档案馆。UNIX 在这方面很酷。
然后,您可以在构建最终代码时将代码作为静态库包含在内。
我很少使用 Eclipse,所以我无法告诉您 IDE 中的确切过程,但我相信您需要设置一个单独的项目来构建它。
现在,如果您想要构建一个 DLL,那么您需要使用一些特殊的标志。这里有一个不错的页面。
于 2009-04-25T17:07:33.063 回答