Veins(车载通信仿真框架)入门教程(二)——调用第三方库
Veins(车载通信仿真框架)入门教程(二)——调用第三方库
在借助Veins进行自己的研究时我们经常需要实现一些比较复杂的功能,有时就需要借助第三方库的帮助。
博主的研究需要使用神经网络,但是自己编写的效果不佳,便借助了第三方库mlpack。
注意:因为Veins基于OMNeT++运行,而OMNeT++又是基于C++的,所以我们找的第三方库也应当是基于C++的。这样做的好处是如果第三方库内一些文件有问题、调用失败或者你需要加入自己的功能,可以直接copy进你的项目文件里更改后调用。
以Veins自带的examples为例
安装第三方库后,在程序内通过include引用相应文件
比如:
#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)即可正常启动:
opp_run -m -n ../../examples/veins:.:../../src/veins --imag-path=../../images -l /usr/local/lib/libmlpack.so -l ../../src/veins omnetpp.ini
其实通过OMNeT++右键点击启动实际上是执行了如下代码(执行代码2):
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++的说明文件里有记录:
Veins(车载通信仿真框架)入门教程(二)——调用第三方库的更多相关文章
- Veins(车载通信仿真框架)入门教程(四)——调试及记录结果
Veins(车载通信仿真框架)入门教程(四)——调试及记录结果 在Veins入门教程(三)最后的动图中(如下图)可以看到大大小小的光圈,这个怎么实现的呢? 很简单,以收到RTS消息为例,通过finHo ...
- Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导
Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 必要的message类实现 从下面开始是在veins/src/vei ...
- Veins(车载通信仿真框架)入门教程
Veins入门教程——教你如何下手研究 目录 Veins入门教程——教你如何下手研究 目录 废话少说! 讲解omnetpp.ini!(挑关键的) 讲解RSUExampleScnario.ned! 注意 ...
- 无废话ExtJs 入门教程二十一[继承:Extend]
无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- 无废话ExtJs 入门教程二[Hello World]
无废话ExtJs 入门教程二[Hello World] extjs技术交流,欢迎加群(201926085) 我们在学校里学习任何一门语言都是从"Hello World"开始,这里我 ...
- RabbitMQ入门教程(二):简介和基本概念
原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...
- Go-Micro框架入门教程(一)---框架结构
Go语言微服务系列文章,使用golang实现微服务,这里选用的是go-micro框架,本文主要是对该框架的一个架构简单介绍. 1. 概述 go-micro是go语言下的一个很好的微服务框架. 1.服务 ...
- CodeIgniter框架入门教程——第一课 Hello World!
本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...
随机推荐
- VM虚拟机,如何放大虚拟机屏幕,如何导出虚拟机ovf
放大屏幕:,第一打开虚拟机,第二在需要放大的虚拟机上安装VMware tools 第三步查看>自动调节大小>自适应客户机.这样就可以放大屏幕了. 没有放大的屏幕 找到安装VMware ...
- eclipse快捷键——纪念我突然失忆的脑子
常用快捷键 1.快速new出来一个对象 Alt+/ 2.快速格式化代码 Ctrl+I 3.快速导入包 Ctrl+Shift+O
- Java 基本数据类型极限值
public static void main(String[] args){ System.out.println("Integer.MIN_VALUE = " + Intege ...
- [Vjudge][POJ][Tony100K]搜索基础练习 - 全题解
目录 POJ 1426 POJ 1321 POJ 2718 POJ 3414 POJ 1416 POJ 2362 POJ 3126 POJ 3009 个人整了一些搜索的简单题目,大家可以clone来练 ...
- Python celery和Redis入门安装使用(排难帖)
1.redis安装 下载地址 https://github.com/MicrosoftArchive/redis/releases,选择Redis-x64-3.2.100.msi5.8 MB下载就好了 ...
- Netty中粘包和拆包的解决方案
粘包和拆包是TCP网络编程中不可避免的,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制. TCP粘包和拆包 TCP是个“流”协议,所谓流,就是没有界限的一串 ...
- JAVA MyBatis配置文件用properties引入外部配置文件
方式一:通过properties 元素的子元素来传递数据 例如: <properties> <property name="driver" value=" ...
- React antd如何实现<Upload>组件上传附件再次上传已清除附件缓存问题。
最近在公司做React+antd的项目,遇到一个上传组件的问题,即上传附件成功后,文件展示处仍然还有之前上传附件的缓存信息,需要解决的问题是,要把上一次上传的附件缓存在上传成功或者取消后,可以进行清除 ...
- java 远程方法调用(RMI)
什么是RMI? 维基百科:一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远程服务器上的对象. 什么是序列化及反序列化 (1)序列化:把对象转换为字节序列的过程称为对象的序列 ...
- 为什么一个Http Header中的空格会被骇客利用 - HTTP request smuggling
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...