You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OMNeT++集成Veins-Inet项目构建失败问题求助

解决OMNeT++中Veins与Simu5G/INET混合构建的链接错误

问题描述

构建包含Inet-4.2.2、Simu5G-1.1.0和veins-5.1的OMNeT++项目时,出现以下链接错误:

  • veins::TraCIScenarioManagerLaunchd类的多个虚函数未定义(如finish()、init_traci()、析构函数等)
  • SignalCallbackListener相关虚表未找到

单独使用Simu5G 1.1.0与Inet 4.2.2可正常运行,导入Veins和Veins-Inet后触发问题,完整错误日志:

Creating shared library: ../out/clang-release/src/libveins_inet.dll
../out/clang-release/src/veins_inet/VeinsInetManager.o:(.rdata+0x7f8): undefined reference to `virtual thunk to veins::TraCIScenarioManagerLaunchd::finish()'
../out/clang-release/src/veins_inet/VeinsInetManager.o:(.rdata+0xc80): undefined reference to `virtual thunk to veins::TraCIScenarioManagerLaunchd::init_traci()'
../out/clang-release/src/veins_inet/VeinsInetManager.o:(.rdata+0x12e8): undefined reference to `virtual thunk to veins::TraCIScenarioManagerLaunchd::~TraCIScenarioManagerLaunchd()'
../out/clang-release/src/veins_inet/VeinsInetManager.o:(.rdata+0x12f0): undefined reference to `virtual thunk to veins::TraCIScenarioManagerLaunchd::~TraCIScenarioManagerLaunchd()'
../out/clang-release/src/veins_inet/VeinsInetManager.o:(.rdata+0x13d8): undefined reference to `virtual thunk to veins::TraCIScenarioManagerLaunchd::initialize(int)'
../out/clang-release/src/veins_inet/VeinsInetManager.o:(.rdata+0x13f0): undefined reference to `virtual thunk to veins::TraCIScenarioManagerLaunchd::finish()'
../out/clang-release/src/veins_inet/VeinsInetManager.o:(.rdata+0x1878): undefined reference to `virtual thunk to veins::TraCIScenarioManagerLaunchd::init_traci()'
../out/clang-release/src/veins_inet/VeinsInetManager.o:(.text[_ZN5veins22SignalCallbackListenerIPN7omnetpp7cObjectEEC2ESt8functionIFvNS_13SignalPayloadIS3_EEEEPNS1_7cModuleEi]+0x25): undefined reference to `__imp__ZTVN5veins22SignalCallbackListenerIPN7omnetpp7cObjectEEE'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [Makefile:136: ../out/clang-release/src/libveins_inet.dll] Error 1
make[1]: Leaving directory '/c/Users/hadil/OneDrive/Desktop/5G/veins_inet/src'
make: *** [Makefile:36: all] Error 2
"make MODE=release all" terminated with exit code 2. Build might be incomplete.

解决方案

  • 确保Veins 5.1已正确构建
    先单独构建Veins 5.1,选择与项目一致的构建模式(如release),确认Veins的输出目录下生成了完整的库文件(如libveins.dll)。构建时不要中断,确保所有编译单元都完成编译。

  • 修正Veins-Inet的依赖配置
    打开Veins-Inet的Makefile,检查VEINS_DIR变量是否指向Veins 5.1的根目录,确保链接选项中包含-lveins且路径正确。同时保证构建模式统一:如果Veins用release模式构建,Veins-Inet和主项目也必须用release模式,禁止混合debug和release库。

  • 排查Simu5G与Veins的兼容性冲突
    先移除Simu5G,单独构建Veins+Veins-Inet+Inet-4.2.2的组合,确认是否能正常编译链接。如果可以,再逐步引入Simu5G,检查是否是Simu5G的构建配置覆盖了Inet或Veins的编译选项。可尝试调整Simu5G的Makefile,避免与Veins的符号冲突。

  • 确保编译时开启RTTI支持
    虚表和虚函数依赖RTTI(运行时类型信息),检查Veins、Veins-Inet、Simu5G和主项目的编译选项,确认clang编译时添加了-frtti参数,保证所有组件的RTTI开启状态一致。

内容的提问来源于stack exchange,提问作者Hadil Hantour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:43:20