【发布时间】:2013-06-22 09:43:30
【问题描述】:
我认为标题几乎达到了目的.. 我想做的是写一个服务器。事情是这样的:
我想将服务器的可分离部分分成不同的项目。例如,我想将项目“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 的项目 Server 中,我需要添加 -lServerNetwork 和 -fPIC 作为 g++ 的参数。
此外,.so 文件包含的文件夹必须添加到库路径中(如果您添加特定项目作为参考,Eclipse 应该自动执行此操作)。*
【问题讨论】:
-
当然这是可能的。你试过什么,什么没用?
-
@g-makulik 好吧.. 我创建了一个项目 ServerNetwork,它目前只有两个类。之后,我创建了另一个项目“Server”,它目前只包含一个 main.cpp,它尝试使用 ServerNetwork 中定义的类。如果我在 Path & Symbols 下添加另一个项目的头文件,我会收到符号未定义的编译器错误(这显然是因为我只引用了包含文件夹)。我不确定,如何正确地做到这一点。我确定我必须告诉 Eclipse 使用 ServerNetwork.so 文件,但我不知道如何..
-
添加对其他项目的引用,而不仅仅是包含文件夹。 Eclipse 将完成剩下的工作......
-
@g-makulik 如果我在“项目 > 属性 > C/C++ 常规 > 路径和符号 > 参考”下添加对活动模式的引用,则它不起作用。编译器找不到头文件。如果我添加头文件的路径,我会得到“未定义的引用”错误。
-
这不是通常的行为。我不认为它必须做某事。使用其中一个项目的共享库类型。可能是这样。 else 有更好的建议给你。在您的问题中描述该行为。
标签: c++ eclipse shared-libraries static-libraries