2017-01-23 69 views
0

早上,將外部庫導入靜脈

我想將自己的庫導入靜脈(v4.4)項目。我跟着tutorial編譯共享庫。 我也剝奪的共享庫使用此命令:

strip --strip-unneeded libfoo.so 

,因爲我已經注意到,系統庫,如在sqlite3的剝離模式下進行編譯。

然後我導入的庫從

1.Project->屬性 - >路徑和符號:

1.1包括

1.2庫

1.3庫路徑

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

但是,問題是,當我使用導入的庫時,我仍然得到「未定義符號」的錯誤;所以我想這個庫不能被模擬器正確導入或讀取。

有什麼建議嗎?

感謝您的幫助

+0

你明白在編譯,鏈接時,或在運行錯誤? –

+0

運行時: 警告:opp_run:啓動時 錯誤_Z3foov:無法檢查庫../../src/veins:../../src//libveins.so:未定義的符號無法加載庫'../../src//libveins.so':../../src//libveins.so:undefined symbol:_Z3foov。 – moi

+0

你用什麼命令行參數來運行模擬? –

回答

0

如何加載額外的庫在你的模擬在user manual's chapter on running simulations被記錄在案。

簡而言之,您需要將-l foo添加到命令行參數中,以便在啓動時模擬加載libfoo.so

如果使用IDE開始模擬,你可以編輯你的模擬的運行配置:選擇菜單項Run > Run Configurations...,然後對More >>Main選項卡上單擊,追加庫的名稱(例如:foo如果你的庫稱爲libfoo.sofoo bar如果您希望您的模擬在啓動時加載libfoo.solibbar.so)到Dynamic libraries文本字段。啓動後,您將看到IDE使用上述命令行參數-l foo運行模擬。

如果您不能確定在哪裏把你的圖書館,一個相關的問題,對這個討論:<!> Error during startup: Cannot load library in OMNET++ project while using sqlite3

+0

如何將庫附加到動態庫字段中的靜脈?因爲我已經以正確的方式完成了所有其他步驟;這可能是唯一導致我的模擬無法正常運行的問題。它是否需要一個半列,昏迷,複製靜脈項目中的lib,etx?我真的嘗試了很多東西,但它不起作用,儘管我可以使用sqlite3庫沒有任何問題。 – moi

+0

我已經編輯了我的答案 –

+0

動態庫:$ {opp_shared_libs:/ veins/examples/veins} foo,但仍然出現「未定義符號」的錯誤。我也嘗試用括號括起來,但它不起作用。 – moi