I'm ZhengKX

Talk is cheap, show me the code

Veins(车载通信仿真框架)入门教程(二)——调用第三方库

 

Veins(车载通信仿真框架)入门教程(二)——调用第三方库

在借助Veins进行自己的研究时我们经常需要实现一些比较复杂的功能,有时就需要借助第三方库的帮助。
博主的研究需要使用神经网络,但是自己编写的效果不佳,便借助了第三方库mlpack

注意:因为Veins基于OMNeT++运行,而OMNeT++又是基于C++的,所以我们找的第三方库也应当是基于C++的。这样做的好处是如果第三方库内一些文件有问题、调用失败或者你需要加入自己的功能,可以直接copy进你的项目文件里更改后调用。

以Veins自带的examples为例

安装第三方库后,在程序内通过include引用相应文件
比如:

1 #include <mlpack/prereqs.hpp>

 

之后若采取“右键点击veins-4.6/examples/veins/omnetpp.ini选择Run As > OMNeT++ simulation”的方式运行仿真程序,则会报错“Error: Cannot load library '../..src//libveins.so'

其实我们只要换一种启动方式即可,进入veins-4.6/examples/veins/omnetpp.ini文件夹,右键开启终端后输入如下代码(执行代码1)即可正常启动:

1 opp_run -m -n ../../examples/veins:.:../../src/veins --imag-path=../../images -l /usr/local/lib/libmlpack.so -l ../../src/veins omnetpp.ini

 

其实通过OMNeT++右键点击启动实际上是执行了如下代码(执行代码2):

1 opp_run -m -n ../../examples/veins:.:../../src/veins --imag-path=../../images -l ../../src/veins omnetpp.ini

 

在你引用第三方库后,OMNeT++默认的执行代码2缺少了对第三方库的引用所以报错,也就是执行代码1内的-l /usr/local/lib/libmlpack.so(此处博主对mlpack的so库进行调用,读者自行更改为自己所需的库,当然注意文件路径也要更换)

相关内容其实在OMNeT++的说明文件里有记录:
这里写图片描述

 

posted @ 2018-04-01 18:07  zhengkunxian  阅读(1199)  评论(1编辑  收藏  举报