Veins_inet:在OMNet 5.1.1中构建时未定义对"__imp__ZTVN5Veins17VeinsInetMobilityE"的引用



i i导入Windows-64机器上的Omnet 5.1.1并尝试构建的Omnet 5.1.1。一切正常(构建INET和静脉),直到开始构建Veines_inet时收到此错误:

veins_inet/VeinsInetMobility.cc:41:1: warning: 'Veins::VeinsInetMobility::VeinsInetMobility()' redeclared without dllimport attribute after being referenced with dll linkage
 VeinsInetMobility::VeinsInetMobility() :
 ^~~~~~~~~~~~~~~~~
veins_inet/VeinsInetMobility.cc:54:6: warning: 'virtual void Veins::VeinsInetMobility::preInitialize(std::__cxx11::string, const inet::Coord&, std::__cxx11::string, double, double)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void VeinsInetMobility::preInitialize(std::string external_id, const inet::Coord& position, std::string road_id, double speed, double angle) {
      ^~~~~~~~~~~~~~~~~
veins_inet/VeinsInetMobility.cc:61:6: warning: 'virtual void Veins::VeinsInetMobility::nextPosition(const inet::Coord&, std::__cxx11::string, double, double)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void VeinsInetMobility::nextPosition(const inet::Coord& position, std::string road_id, double speed, double angle) {
      ^~~~~~~~~~~~~~~~~
veins_inet/VeinsInetMobility.cc:75:8: warning: 'virtual double Veins::VeinsInetMobility::getMaxSpeed() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 double VeinsInetMobility::getMaxSpeed() const {
        ^~~~~~~~~~~~~~~~~
veins_inet/VeinsInetMobility.cc:79:7: warning: 'virtual inet::Coord Veins::VeinsInetMobility::getCurrentPosition()' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 Coord VeinsInetMobility::getCurrentPosition() {
       ^~~~~~~~~~~~~~~~~
veins_inet/VeinsInetMobility.cc:83:7: warning: 'virtual inet::Coord Veins::VeinsInetMobility::getCurrentSpeed()' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 Coord VeinsInetMobility::getCurrentSpeed() {
       ^~~~~~~~~~~~~~~~~
veins_inet/VeinsInetMobility.cc:87:19: warning: 'virtual inet::EulerAngles Veins::VeinsInetMobility::getCurrentAngularPosition()' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 inet::EulerAngles VeinsInetMobility::getCurrentAngularPosition() {
                   ^~~~~~~~~~~~~~~~~
veins_inet/VeinsInetMobility.cc:96:6: warning: 'virtual void Veins::VeinsInetMobility::initialize(int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void VeinsInetMobility::initialize(int stage) {
      ^~~~~~~~~~~~~~~~~
veins_inet/VeinsInetMobility.cc:126:6: warning: 'virtual void Veins::VeinsInetMobility::handleMessage(omnetpp::cMessage*)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]
 void VeinsInetMobility::handleMessage(cMessage *message) {
      ^~~~~~~~~~~~~~~~~
veins_inet/VeinsInetMobility.cc:130:6: warning: 'virtual void Veins::VeinsInetMobility::updateVisualRepresentation()' redeclared without dllimport attribute after being referenced with dll linkage
 void VeinsInetMobility::updateVisualRepresentation() {
      ^~~~~~~~~~~~~~~~~
veins_inet/VeinsInetMobility.cc:137:6: warning: 'virtual void Veins::VeinsInetMobility::emitMobilityStateChangedSignal()' redeclared without dllimport attribute after being referenced with dll linkage
 void VeinsInetMobility::emitMobilityStateChangedSignal() {
      ^~~~~~~~~~~~~~~~~
Creating shared library: ../out/gcc-debug/src/libveins_inet.dll
../out/gcc-debug/src/veins_inet/VeinsInetMobility.o: In function `Veins::VeinsInetMobility::VeinsInetMobility()':
C:omnetpp-5.1.1samplesveins_inetsrc/veins_inet/VeinsInetMobility.cc:47: undefined reference to `__imp__ZTVN5Veins17VeinsInetMobilityE'
C:omnetpp-5.1.1samplesveins_inetsrc/veins_inet/VeinsInetMobility.cc:47: undefined reference to `__imp__ZTVN5Veins17VeinsInetMobilityE'
../out/gcc-debug/src/veins_inet/VeinsInetMobility.o: In function `Veins::VeinsInetMobility::~VeinsInetMobility()':
C:omnetpp-5.1.1samplesveins_inetsrc/./veins_inet/VeinsInetMobility.h:37: undefined reference to `__imp__ZTVN5Veins17VeinsInetMobilityE'
C:omnetpp-5.1.1samplesveins_inetsrc/./veins_inet/VeinsInetMobility.h:37: undefined reference to `__imp__ZTVN5Veins17VeinsInetMobilityE'
collect2.exe: error: ld returned 1 exit status
make[1]: *** [Makefile:89: ../out/gcc-debug/src/libveins_inet.dll] Error 1
make[1]: Leaving directory '/c/omnetpp-5.1.1/samples/veins_inet/src'
make: *** [Makefile:12: all] Error 2

我尝试使用GCC释放而不是GCC释放,但问题仍然存在。有帮助吗?谢谢。

max,

正如您所说的,它绝对看起来像是Windows问题。今天,当我第一次在Windows下构建Veins_inet时,我遇到了完全相同的错误。上个月,我被迫重新安装我的Linux(Ubuntu 16.04 64位)工作站,但从未遇到过同样的问题 - 它完美地编译了。

您可以检查您的静脉漏洞。在某些Omnet Windows Edition中,"无dllimport属性"警告和"未定义的参考"错误可能是由" Inet_api"引起的。您只需删除" inet_api"即可查看是否还可以。只是为了建议。

最新更新