赞
踩
本文使用:boost1.65;vsomeip3.4.10
下载vsomeip源码:https://github.com/GENIVI/vsomeip.git
下载相应版本的boost源码包:
Boost C++ Libraries - Browse /boost-binaries at SourceForge.net
注:建议直接使用二进制安装boost,手动编译容易出错
头文件:boost
库文件:lib64-msvc-14.1
在开始菜单的VS菜单项里打开“Developer Command Prompt for VS2022”,进入boost目录
cd /d C:\Users\GW00272301\Desktop\FirstAA-windows\boost_1_69_0\boost_1_69_0
- import option ;
-
- using msvc : 14.3 : "E:\program\Microsoft Visual Studio2022\Community\VC\Tools\MSVC\14.32.31326\bin\Hostx64\x64\cl.exe" ;
-
- option.set keep-going : false ;
b2.exe install toolset=msvc-14.3 runtime-link=shared threading=multi --build-dir=build --build-type=complete --prefix=./stage -j8
参数解释:
toolset:使用的VS的版本为143(vs2022)
without:不编译python
prefix:编译后生成的位置
在 Windows 下编译 Boost 库后,你可以通过以下步骤来检测编译是否成功:
1、打开 Visual Studio,创建一个新的空白项目(例如 Console Application)。
2、导入引用的boost库的include和lib ,参考:
BOOST库配置到VS2022(保姆级教程)_boost v141在vs2022怎么用-CSDN博客
3、在项目中的源文件中,包含 Boost 库的头文件并尝试使用其中的功能函数。例如,在源文件中添加以下代码:
- cppCopy Code#include <boost/version.hpp>
- #include <iostream>
-
- int main() {
- std::cout << "Boost version: " << BOOST_LIB_VERSION << std::endl;
- return 0;
- }
4、构建并运行该项目。如果编译和链接过程没有错误,并且程序能够成功输出 Boost 的版本号,则说明 Boost 库编译成功。
另外,你还可以通过以下方法之一来检查 Boost 库编译成功与否:
检查编译输出:在 Visual Studio 中查看编译输出窗口,确保没有任何关于 Boost 库的编译错误信息。
检查生成的库文件:确认在编译过程中生成了正确的 Boost 库文件(如 .lib 或 .dll 文件)。
如果以上步骤中没有出现错误,并且你能够正常使用 Boost 库的功能,那么说明你已经成功编译 Boost 库。
cmake -G “Visual Studio 17 2022” .. -DBOOST_ROOT=E:\Boost-Vsomeip\boost_1_65_0 -DBoost_USE_STATIC_LIBS=ON
4、此时在build\debug中已经生成了相应的库文件:
- #设置环境变量
- @ECHO OFF
- SETLOCAL
- #添加boost和vsomeip库路径
- set PATH=%PATH%;E:\Boost-Vsomeip\vsomeip-master\build\Debug;E:\Boost-Vsomeip\boost_1_65_0\lib64-msvc-14.1
- set VSOMEIP_CONFIGURATION=E:\Boost-Vsomeip\vsomeip-master\build\examples\hello_world\Debug\helloworld-local.json
- set VSOMEIP_APPLICATION_NAME=hello_world_service
- #查看环境变量
- #set VSOMEIP_CONFIGURATION
- #启动程序
- hello_world_service.exe
注:每次执行前,手动删除环境变量TEMP下的vsomeip.lck文件
cmake ..
make
sudo make install
make example(编译exmaple中的源码)
- HOST1:
- VSOMEIP_CONFIGURATION=./helloworld-local.json \
- VSOMEIP_APPLICATION_NAME=hello_world_service \
- ./hello_world_service
-
- HOST1:
- VSOMEIP_CONFIGURATION=./helloworld-local.json \
- VSOMEIP_APPLICATION_NAME=hello_world_client \
- ./hello_world_client
注:必须使用有线网络通信!!!
- {
- "unicast": "10.20.20.28",
- "logging" :
- {
- "level" : "debug",
- "console" : "true",
- "file" : { "enable" : "false", "path" : "/tmp/vsomeip.log" },
- "dlt" : "false"
- },
- "applications": [
- {
- "name": "hello_world_service",
- "id": "0x4444"
- }
- ],
- "services": [
- {
- "service": "0x1111",
- "instance": "0x2222",
- "unreliable": "30509"
- }
- ],
- "routing": "hello_world_service",
- "service-discovery" :
- {
- "enable" : "true",
- "multicast" : "224.0.0.11",
- "port" : "12330",
- "protocol" : "udp",
- "initial_delay_min" : "10",
- "initial_delay_max" : "100",
- "repetitions_base_delay" : "200",
- "repetitions_max" : "3",
- "ttl" : "3",
- "cyclic_offer_delay" : "2000",
- "request_response_delay" : "1500"
- }
- }
- {
- "unicast": "10.20.20.15",
- "logging" :
- {
- "level" : "debug",
- "console" : "true",
- "file" : { "enable" : "false", "path" : "/tmp/vsomeip.log" },
- "dlt" : "false"
- },
- "applications": [
-
- {
- "name": "hello_world_client",
- "id": "0x5555"
- }
- ],
- "services": [
- {
- "service": "0x1111",
- "instance": "0x2222",
- "unreliable": "30509"
- }
- ],
- "routing": "hello_world_client",
- "service-discovery" :
- {
- "enable" : "true",
- "multicast" : "224.0.0.11",
- "port" : "12330",
- "protocol" : "udp",
- "initial_delay_min" : "10",
- "initial_delay_max" : "100",
- "repetitions_base_delay" : "200",
- "repetitions_max" : "3",
- "ttl" : "3",
- "cyclic_offer_delay" : "2000",
- "request_response_delay" : "1500"
- }
- }
将 cl 命令的位置添加到系统的环境变量中,我这里 VS 被安装到了 E 盘中,需要将以下内容添加到 Path 环境变量中:
E:\program\Microsoft Visual Studio2022\Community\VC\Tools\MSVC\14.32.31326\bin\Hostx64\x64
- error: msvc initialization: parameter 'version' inconsistent
- error: no value was specified in earlier initialization
- error: an explicit value is specified now
修改 boost根目录下的 project-config.jam 文件,如果用的是 VS2022,则可以将里面的内容修改成:
- import option ;
-
- using msvc : 14.3 : "E:\program\Microsoft Visual Studio2022\Community\VC\Tools\MSVC\14.32.31326\bin\Hostx64\x64\cl.exe" ;
-
- option.set keep-going : false ;
1)安装cmake
Win10 下的 CMake的安装(详细版)_win10 cmake安装-CSDN博客
2)重启电脑 使环境变量生效
解决:
boost版本没用对,导致vsomeip找不到对应目录下的头文件 ,使用vsomeip的cmakelists.txt里规定的boost版本(一般为boost1.55-1.65)
1、无线网络下,Windows的wireshark可以抓到hello-world的SD报文,但是无法通信:改为同一网段&使用有线网络
2、有线网络下,Windows的wireshark抓不到MyfirstAa-provider的SD报文:起routingmanagerd,routing字段改为routingmanagerd
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。