Mahmoud Hashem Eiza
Mahmoud Hashem Eiza

Reputation: 1

Veins_inet: undefined reference to `__imp__ZTVN5Veins17VeinsInetMobilityE' when building in OMNet 5.1.1

I imported veins_inet subproject into OMNet 5.1.1 on Windows-64 machine and tried to build. Everything went okay (building inet and veins) until receiving this error when it starts building veins_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.1\samples\veins_inet\src/veins_inet/VeinsInetMobility.cc:47: undefined reference to `__imp__ZTVN5Veins17VeinsInetMobilityE'
C:\omnetpp-5.1.1\samples\veins_inet\src/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.1\samples\veins_inet\src/./veins_inet/VeinsInetMobility.h:37: undefined reference to `__imp__ZTVN5Veins17VeinsInetMobilityE'
C:\omnetpp-5.1.1\samples\veins_inet\src/./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

I tried using gcc-release instead of gcc-debug but the problem stays. Any help please? Thanks.

Max,

Upvotes: 0

Views: 825

Answers (2)

179416326_zz
179416326_zz

Reputation: 1

You may check your VeinsInetMobility.h if there is class INET_API xx : public. The "without dllimport attribute" warning and "undefined reference" error may be caused by "INET_API" in some omnet windows edition. You can just remove "INET_API" to see if it is OK. Just for advice.

Upvotes: 0

Tirob
Tirob

Reputation: 41

As you said, it definitely looks like a Windows issue. Today i got exactly the same error, when building veins_inet under Windows for the first time. Last month I was forced to reinstall my Linux (Ubuntu 16.04 64-bit) workstation several times and never had the same issue - it compiled flawlessly.

Upvotes: 1

Related Questions