2017-01-23 70 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