C++ eclipsec/C++;:在可执行项目中使用静态/共享库项目

C++ eclipsec/C++;:在可执行项目中使用静态/共享库项目,c++,eclipse,shared-libraries,static-libraries,C++,Eclipse,Shared Libraries,Static Libraries,我认为这个标题几乎切中要害。。 我想做的是写一个服务器。事情是这样的: 我想将服务器的可分离部分分成不同的项目。例如,我想将一个项目“ServerNetworkStuff”和“ServerGameLogicStuff”创建为两个静态或共享库项目 现在我想创建另一个项目“服务器”,它将这两个项目用作库 Eclipse Projects: - ServerNetworkStuff (static library) - ServerGameLogicStuff (shared library) - S

我认为这个标题几乎切中要害。。 我想做的是写一个服务器。事情是这样的:

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

现在我想创建另一个项目“服务器”,它将这两个项目用作库

Eclipse Projects:
- ServerNetworkStuff (static library)
- ServerGameLogicStuff (shared library)
- Server (using ServerNetworkStuff, ServerGameLogicStuff)
这可能吗?或者有没有任何等效的解决方案不会迫使我重新发明轮子

谢谢你的帮助

编辑:

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

部分解决方案:

*好了,现在编译好了。。。但目前执行不起作用

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

我不得不把我的包括从

#include <include/ServerThread.hpp>
不意味着我在项目中使用的任何共享库。只是为了我自己的类的引用而修改了它

在想要使用ServerNetwork的project Server中,我需要添加-lServerNetwork和-fPIC作为g++的参数


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

Eclipse中的引用仅适用于打开的项目。我发现最快的方法是在系统路径(/usr/local/include或类似文件)中添加或符号链接所需的头,或者只向其中添加路径,并对库执行相同的操作

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

  • 项目属性->C/C++常规->路径和符号->中的-I路径包括

  • 项目属性->C/C++常规->路径和符号->库路径中的-L libs路径

  • projectproperties->C/C++General->Path和
    符号->库

<>或手动:-i路径在ProjtProjts:>C/C++ +构建> > [CGG/C/C++ ]编译器>包含,--L LIBS在代码>项目属性> > C/C++ +构建>设置-> C++链接器>库< /Cl> 包含 现在,您可以使用
语法包含
(将前者保留给系统库是一种很好的做法)

问题
如果不移动/复制/符号链接默认路径中的库,则可能会出现执行问题,例如使用OSX,解决方案是在执行之前导出非默认路径(例如,对于OSX,
export DYLD\u FALLBACK\u LIBRARY\u path=$DYLD\u FALLBACK\u LIBRARY\u path:/non default/lib/path
).

Eclipse中的引用仅适用于打开的项目。我发现最快的方法是在系统路径(/usr/local/include或类似文件)中添加或符号链接所需的头,或者只向其中添加路径,并对库执行相同的操作

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

  • 项目属性->C/C++常规->路径和符号->中的-I路径包括

  • 项目属性->C/C++常规->路径和符号->库路径中的-L libs路径

  • projectproperties->C/C++General->Path和
    符号->库

<>或手动:-i路径在ProjtProjts:>C/C++ +构建> > [CGG/C/C++ ]编译器>包含,--L LIBS在代码>项目属性> > C/C++ +构建>设置-> C++链接器>库< /Cl> 包含 现在,您可以使用
语法包含
(将前者保留给系统库是一种很好的做法)

问题
如果您不移动/复制/符号链接默认路径中的库,您应该会有执行问题,例如使用OSX,解决方案是在执行之前导出非默认路径(例如,
export DYLD\u FALLBACK\u LIBRARY\u path=$DYLD\u FALLBACK\u LIBRARY\u path:/non default/lib/path
,适用于OSX)。

当然这是可能的。你试过什么,什么没用?@g-makulik嗯。。我创建了一个project ServerNetwork,目前只有两个类。之后,我创建了另一个项目“服务器”,它目前只包含一个main.cpp,它试图使用ServerNetwork中定义的类。如果我在Path&Symbols下添加另一个项目的头文件,我会收到编译器错误,即符号未定义(这显然是因为我只引用了include文件夹)。我不确定,怎么做才对。我确信我必须告诉Eclipse使用ServerNetwork.so文件,但我不知道如何..添加对其他项目的引用,而不仅仅是include文件夹。Eclipse将完成剩下的工作…@g-makulik如果我在“项目>属性>C/C++常规>路径和符号>引用”下添加对活动模式的引用,它将不起作用。编译器找不到头文件。。如果我将路径添加到头文件中,就会出现“未定义引用”错误。这不是通常的行为。我认为它不必做s.th。使用其中一个项目的共享库类型。也许s.o.其他人对你有更好的建议。在你的问题中描述这种行为。当然这是可能的。你试过什么,什么没用?@g-makulik嗯。。我创建了一个project ServerNetwork,目前只有两个类。之后,我创建了另一个项目“服务器”,whi
#include "ServerThread.hpp"