2017-01-23 17 views
0

朝、外部ライブラリをVeinsにインポートする

自分のライブラリをVeins(v4.4)プロジェクトにインポートします。

これに続いてtutorialを実行して共有ライブラリをコンパイルします。私は、このようなsqlite3のなどのシステムライブラリが取り除かモードでコンパイルされていることに気付きましたので、

strip --strip-unneeded libfoo.so 

: は、私はまた、このコマンドを使用して、共有ライブラリを剥奪しました。

は、その後、私は

1.Project->プロパティ - >パスとシンボルからライブラリをインポート:

1.1は

1.2ライブラリ

1.3ライブラリパス

2と、 .Makemake-> Src-> Options-> Link-> Additional Libraries

しかし、問題は、インポートしたライブラリを使用すると "undefined symbol"というエラーが表示されることです。だから私はライブラリが正しく読み込まれていないか、シミュレータで読み込まれていると思います。

提案がありますか? user manual's chapter on running simulationsに記載されてどのようにあなたのシミュレーションでは、追加のライブラリをロードする

+0

あなたは、エラーが出るのですか? –

+0

実行中: 警告:opp_run:ライブラリ../../src/veinsをチェックすることはできません:../../src//libveins.so:未定義のシンボル:起動時に_Z3foov エラー:ライブラリをロードすることはできませんが'../../src//libveins.so':../../src//libveins.so:未定義シンボル:_Z3foov。 – moi

+0

シミュレーションを実行するコマンドラインパラメータは何ですか? –

答えて

0

を支援するための

感謝。

簡単に言えば、起動時にシミュレーションロードをlibfoo.soにするために、コマンドラインパラメータに-l fooを追加する必要があります。

あなたはシミュレーションを開始するためにIDEを使用している場合、あなたは、シミュレーションの実行構成を編集することができます:あなたのライブラリーが呼び出された場合などfoo(あなたのライブラリーの名前を追加し、その後、Mainタブをクリックしたときに、More >>に、メニュー項目Run > Run Configurations...を選択します。 libfoo.so、またはfoo barの場合は、libfoo.solibbar.soを起動時にロードする場合は、Dynamic librariesテキストフィールドに入力します。起動後、前述のコマンドラインパラメータ-l fooがIDEでシミュレーションの実行に使用されていることがわかります。

あなたはあなたのライブラリーを置く場所がわからない場合は、関連する質問はこれについての議論があります。コンパイル中にリンク中、または実行中に<!> Error during startup: Cannot load library in OMNET++ project while using sqlite3

+0

"ライブラリを動的ライブラリフィールドの静脈に追加するにはどうすればよいですか? Beacuse私はすでに他のすべてのステップを正しい方法で行っていました。私のシミュレーションを正しく実行できない唯一の原因となる可能性があります。それは、セミコラム、昏睡、静脈プロジェクト、エックスのlibをコピーする必要がありますか?私は本当にたくさんのものを試しましたが、問題なくsqlite3ライブラリを使用することはできますが、動作しません。 – moi

+0

私はそれに応じて私の答えを編集しました –

+0

ダイナミックライブラリ:$ {opp_shared_libs:/ veins/examples/veins} foo、 "undefined symbol"というエラーが表示されます。私も括弧の中にfooを入れてみましたが、うまくいきません。 – moi

関連する問題