1

タイトルはほぼポイントに達していると思います。私がやろうとしているのはサーバーを書くことです。これがそのことです:

サーバーの分離可能な部分を異なるプロジェクトに分離したいと思います。たとえば、プロジェクト「ServerNetworkStuff」と「ServerGameLogicStuff」を静的ライブラリまたは共有ライブラリの2つのプロジェクトに作成したいとしました。

次に、これら2つのプロジェクトをライブラリとして使用する別のプロジェクト「サーバー」を作成します。

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

それも可能ですか?または、車輪の再発明を強制しない同等の解決策はありますか?

ご協力ありがとうございました!

編集:

[プロジェクト]>[プロパティ]>[C/ C++一般]>[パスとシンボル]>[参照]でアクティブモードへの参照を追加すると、機能しません。コンパイラがヘッダーファイルを見つけることができません。ヘッダーファイルにパスを追加すると、「未定義の参照」エラーが発生します。

部分的な解決策:

*これでコンパイルされます...しかし、現時点では実行は機能しません。

私が最初に行ったのは、プロジェクト「Server」(実行可能)とServerNetwork(共有ライブラリ)を作成することでした。ServerNetwork参照をサーバーに追加した後、やるべきことがいくつか残っていました。

インクルードをから変更する必要がありました

#include <include/ServerThread.hpp>

#include "ServerThread.hpp"

プロジェクトで使用している共有ライブラリを意味するものではありません。自分のクラスの参照用に変更しただけです。

ServerNetworkを使用したい私のプロジェクトサーバーでは、g++のパラメーターとして-lServerNetworkと-fPICを追加する必要がありました。

さらに、.so-fileに含まれるフォルダーをライブラリパスに追加する必要があります(特定のプロジェクトを参照として追加すると、Eclipseが自動的に実行する必要があります)。*

4

1 に答える 1

1

Eclipseのリファレンスは、開いているプロジェクトでのみ機能します。最速の方法は、システムパス(/ usr / local / includeなど)に必要なヘッダーを追加またはシンボリックリンクするか、パスを追加してライブラリで同じことを行うことです。

それをしたくない場合(これが最良のオプションであるはずです)、インクルードとライブラリを追加できます。

  • -IパスのProject Properties -> C/C++ General -> Path and Symbols -> Includes

  • -L libsのパスProject Properties -> C/C++ General -> Path and Symbols -> Library Paths、、

  • の-llibs Project Properties -> C/C++ General -> Path and Symbols -> Libraries

または手動で:の-IパスProject Properties -> C/C++ Build -> Settings -> [CGG/C/C++] Compiler -> Includes、およびの-L-llibs Project Properties -> C/C++ Build -> Settings -> C++ Linker -> Libraries

インクルージョン

これで、または構文の#includeいずれかを使用できます(前者をシステムライブラリに予約することをお勧めします)。<>""

Iussues

たとえばOSXの場合、デフォルトのパスでライブラリを移動/コピー/シンボリックリンクしないと、実行の問題が発生するはずです。解決策は、実行の直前にデフォルト以外のパスをエクスポートすることです(export DYLD_FALLBACK_LIBRARY_PATH=$DYLD_FALLBACK_LIBRARY_PATH:/non-default/lib/pathOSXの場合など)。

于 2013-06-20T16:37:05.560 に答える