如何创建单独的库以包含在 C++/Eclipse 中

发布于 2024-07-17 18:50:43 字数 160 浏览 11 评论 0原文

我已经获得了一些与 TinyXML 解析器一起使用的 C++ 代码。 然而,要做到这一点,我必须将 TinyXML 的源代码包含在我的常规源代码中。 我希望将 TinyXML 作为一个单独的库包含在内。 我正在使用 Eclipse 和 Cygwin C++ 编译器。 有什么好的方法可以做到这一点?

I've gotten some C++ code to work with the TinyXML parser. However, to do this I had to include the source code from TinyXML with my regular source code. I'd like to have TinyXML included as a separate library. I'm using Eclipse with the Cygwin C++ compiler. What's a good way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淤浪 2024-07-24 18:50:43

我假设您想将库与您自己的项目的源代码分开......但是当库不在同一文件夹中时您不知道如何构建。


假设您的库已经预编译了 *.lib 和 *.h 文件:

  1. 将库源代码移动到单独的目录
  2. 菜单栏“项目”
  3. 菜单“属性”将打开一个对话框,其中包含所有项目属性,左侧将有一个列表。
  4. 列表项“C/C++ Build”将更改 GUI 并显示 gcc 编译器/链接器/汇编器的所有选项(我从不进行汇编...所以我从不对汇编器做任何事情)。 [1]
  5. GCC C编译器 --> 目录:
  6. 绿色加号图标 [2] --> 指定 *.h 文件的路径
  7. 您的编译器现在应该很高兴(但您将无法链接,因为链接器不知道每个函数的实际定义是什么)
  8. GCC C Linker --> 库:
  9. 库搜索路径(-L)--> 绿色加号图标 --> 指定 *.lib 文件的路径
  10. 库 (-l) --> 绿色加号图标 --> 指定您正在使用的每个库的名称
  11. 您的链接器现在应该很高兴并且您的代码应该可以编译

[脚注 - 1] GUI C/C++ 构建窗格是 gcc 命令行编译器/链接器的包装器...它只是在制作它更容易使用,因为它可以直观地向您展示一切。

[脚注 - 2] “+”图标将告诉编译器您的库 *.h 包含文件所在的位置。 编译器在编译之前需要 *.h 文件来了解您的库具有哪些函数原型。


假设您有实际的(未编译的)*.c 和 *.h:

  1. 除了步骤 7 之外,执行上述相同步骤。
  2. 在步骤 7 中,您需要确保 Eclipse 的“托管 make”可以看到库的 *.c 文件。 如果它看不到源代码,那么您需要指定源代码的位置,以便它进行编译。

I assume you want to separate the library from your own project's source code... but you don't know how to build when the library is not in the same folder.


Assuming your library has precompiled *.lib and *.h files:

  1. Move the library source code to a separate directory
  2. Menubar "project"
  3. Menu "properties" will open a dialog box for all the project properties there will be a list on the left.
  4. List item "C/C++ Build" will change the GUI and show you all the options for gcc's compiler/linker/assembler ( I never do assembly... so I never do anything with the assembler ). [1]
  5. GCC C Compiler --> Directories:
  6. Green plus icon [2] --> Specify the path of your *.h files
  7. Your compiler should now be happy ( but you will fail linking because the linker doesn't know what the actual definitions of each function are )
  8. GCC C Linker --> Libraries:
  9. Library search path (-L) --> Green plus icon --> Specify the path of your *.lib files
  10. Libraries (-l) --> Green plus icon --> Specify the name of each library you are using
  11. Your linker should now be happy and your code should compile

[Footnote - 1] The GUI C/C++ build pane is a wrapper for gcc's command line compiler/linker... it is just making it easier to use because it shows you everything visually.

[Footnote - 2] The '+' icon is what will tell the compiler where your libraries *.h include files are located. The compiler needs the *.h files to know what function prototypes your library has before it compiles.


Assuming you have the actual ( not compiled ) *.c and *.h:

  1. Do the same steps above except in step 7.
  2. At step 7. you need to make sure the library's *.c files are seen by Eclipse's "managed make". If it doesn't see the source code then you need to specify where the source is so that it will compile it.
秋叶绚丽 2024-07-24 18:50:43

这基本上很容易。 您编译该库的源代码,并使用ar(1)构建该库。 是的,令人惊讶的是,图书馆只是一个档案馆; UNIX 在这方面很酷。

然后,您可以在构建最终代码时将代码作为静态库包含进来。

我不太使用 Eclipse,所以我无法告诉您 IDE 中的确切过程,但我相信您需要的是设置一个单独的项目来构建它。

现在,如果您想要构建 DLL,那么您需要使用一些特殊标志。 这里有一个不错的页面。

It's basically easy. You compile your source code for the library, and construct the library with ar(1). Yes, surprise, a library is just an archive; UNIX is cool that way.

You can then include the code as a static library when you build the final code.

I don't use Eclipse all that much so I can't tell you the exact process within the IDE, but I believe what you need is to set up a separate project to build it.

Now, if what you want is to build a DLL, then you need to use some special flags. There's a nice page here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文