我认为这个头衔几乎达到了重点。 我想要做的是写一个服务器。事情就是这样:
我想将服务器的可分离部分分成不同的项目。例如,我想在两个静态或共享库项目中创建一个Project“ServerNetworkStuff”和“ServerGameLogicStuff”。
现在我想创建另一个项目“服务器”,它将这两个项目用作库。
Eclipse Projects:
- ServerNetworkStuff (static library)
- ServerGameLogicStuff (shared library)
- Server (using ServerNetworkStuff, ServerGameLogicStuff)
这甚至可能吗?或者是否有任何等效的解决方案不会迫使我重新发明轮子?
感谢您的帮助!
修改
如果我在“项目>属性> C / C ++一般>路径和符号>参考”下添加对活动模式的引用,则它不起作用。编译器找不到头文件..如果我添加头文件的路径,我会得到“未定义的引用”错误。
PARTLY SOLUTION:
*好吧现在编译......但执行暂时不起作用..
我所做的是首先创建我的项目“Server”(可执行文件)和 ServerNetwork (共享库)。在向服务器添加 ServerNetwork 引用之后,还有一些事情要做。
我必须从
更改我的包含#include <include/ServerThread.hpp>
到
#include "ServerThread.hpp"
没有意义我在项目中使用的任何共享库。只是将它改为我自己的类的引用。
在我想要使用 ServerNetwork 的项目服务器中,我需要添加-lServerNetwork和-fPIC作为g ++的参数。
此外,必须将.so文件包含的文件夹添加到库路径(如果您将特定项目添加为参考,Eclipse应自动执行此操作)。*
答案 0 :(得分:1)
Eclipse中的Reference仅适用于打开的项目。我发现最快的方法是添加或符号链接系统路径中所需的头文件(/ usr / local / include或类似文件),或者只添加它的路径,并对库执行相同的操作。
如果您不想这样做(这应该是最佳选择),您仍然可以添加包含和库:
Project Properties -> C/C++ General -> Path and Symbols -> Includes
中的-I路径,
Project Properties -> C/C++ General -> Path and Symbols -> Library Paths
中的-L libs路径,
Project Properties -> C/C++ General -> Path and
Symbols -> Libraries
中的-l libs。
或手动:Project Properties -> C/C++ Build -> Settings -> [CGG/C/C++] Compiler -> Includes
中的-I路径和Project Properties -> C/C++ Build -> Settings -> C++ Linker -> Libraries
中的-L -l libs。
现在,您可#include
使用<>
或""
语法(将前者保留给系统库是一种很好的做法)。
如果不在默认路径中移动/复制/符号链接库,则应该有执行问题,例如使用OSX,解决方案是在执行之前导出非默认路径(例如export DYLD_FALLBACK_LIBRARY_PATH=$DYLD_FALLBACK_LIBRARY_PATH:/non-default/lib/path
OSX)。