【发布时间】:2018-05-23 16:44:19
【问题描述】:
我目前正在做一个静脉项目,直到今天一切都很好。 我需要在“venes/src/veins/modules”目录中添加一个新模块,所以我只是创建了一个新文件夹并将一些 .ned 文件和相关的头文件/源文件放在那里。这样做后我遇到了一些错误,但没什么特别的(我可能做错了什么,编译器不喜欢它)。然后我决定删除该文件夹,然后再试一次。
这样做后,我重新运行了完全相同的模拟,并且 omnet/IDE 开始显示此内容,但无法启动:
<!> Error: Cannot load library '../../src//libveins.so': ../../src//libveins.so: undefined symbol: _ZN8Flooding6finishEv
End.
Simulation terminated with exit code: 1
我尝试了全新的清洁并重建了整个静脉项目,但这并没有帮助。 我用谷歌搜索了这个错误,但找不到与我的情况类似的东西。 提前感谢您的帮助。
最好的问候。
【问题讨论】:
-
尝试手动删除 libveins.so 并重建项目。
-
当你清理本地 -> 清理项目 -> 重建它会自动删除 libveins.so 文件,所以我怀疑这是问题,但我会尝试。
-
您是否还有一些代码指向您创建的符号?我不认为
_ZN8Flooding6finishEv符号是 VEINS 的一部分。如果一切都失败了,请尝试克隆 VEINS 的新副本并编译它——如果可行,git bisect在项目的提交历史记录中找到引入错误的提交。 -
c++filt _ZN8Flooding6finishEv显示缺少的符号是Flooding::finish()。您似乎对这种方法有减速,但缺少相应的实现。我假设您的模块被称为Flooding并且您在重新开始时没有将其全部删除。 -
哦,我自己发现了问题所在,但正如你所说。我只是无法弄清楚那个未定义的符号是什么。在 Windows 上运行相同的配置表明它确实没有实现
Flooding::finish()(这可能是因为它在 Windows 上自动解构)。 opp_run 而不是编译器告诉我们这很奇怪。不管怎样,现在一切都好。感谢您的帮助。