1

我认为标题几乎达到了目的。我想做的是写一个服务器。事情是这样的:

我想将服务器的可分离部分分成不同的项目。例如,我想将项目“ServerNetworkStuff”和“ServerGameLogicStuff”创建为两个静态或共享库项目。

现在我想创建另一个使用这两个项目作为库的项目“服务器”。

Eclipse Projects:
- ServerNetworkStuff (static library)
- ServerGameLogicStuff (shared library)
- Server (using ServerNetworkStuff, ServerGameLogicStuff)

这甚至可能吗?或者是否有任何等效的解决方案不会迫使我重新发明轮子?

谢谢您的帮助!

编辑:

如果我在“项目 > 属性 > C/C++ 常规 > 路径和符号 > 引用”下添加对活动模式的引用,则它不起作用。编译器找不到头文件。如果我添加头文件的路径,我会得到“未定义的引用”错误。

部分解决方案:

*好的,现在可以编译了...但是目前无法执行..

我所做的是首先创建我的项目“服务器”(可执行文件)和ServerNetwork(共享库)。添加对 Server 的ServerNetwork引用后,还有一些事情要做。

我不得不改变我的包括

#include <include/ServerThread.hpp>

#include "ServerThread.hpp"

不意味着我在项目中使用的任何共享库。只是将它更改为我自己的类的引用。

在我想要使用ServerNetwork的项目服务器中,我需要添加 -lServerNetwork 和 -fPIC 作为 g++ 的参数。

此外,必须将 .so 文件包含的文件夹添加到库路径中(如果您添加特定项目作为参考,Eclipse 应该自动执行此操作)。*

4

1 回答 1

1

Eclipse 中的参考仅适用于打开的项目。我发现最快的方法是在系统路径(/usr/local/include 或类似)中添加或符号链接所需的头文件,或者只是添加它的路径,并对库做同样的事情。

如果您不想这样做(这应该是最好的选择),您仍然可以添加包含和库:

  • 中的 -I 路径Project Properties -> C/C++ General -> Path and Symbols -> Includes

  • -L 库中的路径Project Properties -> C/C++ General -> Path and Symbols -> Library Paths

  • 中的 -l 库Project Properties -> C/C++ General -> Path and Symbols -> Libraries

或手动: 中的 -I 路径Project Properties -> C/C++ Build -> Settings -> [CGG/C/C++] Compiler -> Includes和 中的 -L -l 库Project Properties -> C/C++ Build -> Settings -> C++ Linker -> Libraries

包容性

现在您可以#include使用<>或使用""语法(将前者保留给系统库是一个很好的做法)。

问题

如果您不在默认路径中移动/复制/符号链接库,您应该会遇到执行问题,例如对于 OSX,解决方案是在执行之前导出非默认路径(例如export DYLD_FALLBACK_LIBRARY_PATH=$DYLD_FALLBACK_LIBRARY_PATH:/non-default/lib/path对于 OSX)。

于 2013-06-20T16:37:05.560 回答