riebl / artery

OMNeT++ V2X simulation framework for ETSI ITS-G5
GNU General Public License v2.0
204 stars 132 forks source link

Build on Windows #163

Open OrmandiTamas opened 3 years ago

OrmandiTamas commented 3 years ago

Dear all, I'm trying to build artery in Windows 10 (unfortunatley I need Windows). I built and installed every required libraries and software. When I'm running cmake .. in the build directory, I get the following errors:

Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.18363.
Found Boost: C:/Boost/lib/cmake/Boost-1.75.0/BoostConfig.cmake (found suitable version "1.75.0", minimum required is "1.59") found components: date_time system 
Build GTest without threading
Found Boost: C:/Boost/lib/cmake/Boost-1.75.0/BoostConfig.cmake (found suitable version "1.75.0", minimum required is "1.58") found components: date_time 
Reading C:/Program Files/GeographicLib-1.51/cmake/geographiclib-config.cmake
GeographicLib configuration, version 1.51
  ${GeographicLib_LIBRARIES} set to shared library
GeographicLib: using found CMake configuration
Skip build of proxy_fake_feed. POSIX extension required.
SimuLTE integration disabled
Enable Veins integration
Enable INET integration
Configuring done
CMake Warning (dev) at extern/vanetza/cmake/UseGTest.cmake:51 (add_executable):
  Policy CMP0115 is not set: Source file extensions must be explicit.  Run
  "cmake --help-policy CMP0115" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  File:

    C:/arterym/artery/extern/vanetza/vanetza/geonet/tests/router_request.cpp
Call Stack (most recent call first):
  extern/vanetza/vanetza/geonet/tests/CMakeLists.txt:32 (add_gtest)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error in src/artery/CMakeLists.txt:
  Evaluation file to be written multiple times with different content.  This
  is generally caused by the content evaluating the configuration type,
  language, or location of object files:

   C:/arterym/artery/build/run_artery.sh

CMake Error in src/artery/CMakeLists.txt:
  Evaluation file to be written multiple times with different content.  This
  is generally caused by the content evaluating the configuration type,
  language, or location of object files:

   C:/arterym/artery/build/run_artery.sh

CMake Error in src/artery/CMakeLists.txt:
  Evaluation file to be written multiple times with different content.  This
  is generally caused by the content evaluating the configuration type,
  language, or location of object files:

   C:/arterym/artery/build/run_artery.sh

CMake Error in src/artery/CMakeLists.txt:
  Evaluation file to be written multiple times with different content.  This
  is generally caused by the content evaluating the configuration type,
  language, or location of object files:

   C:/arterym/artery/build/run_artery.sh

CMake Error in src/artery/CMakeLists.txt:
  Evaluation file to be written multiple times with different content.  This
  is generally caused by the content evaluating the configuration type,
  language, or location of object files:

   C:/arterym/artery/build/run_artery.sh

CMake Error in src/artery/CMakeLists.txt:
  Evaluation file to be written multiple times with different content.  This
  is generally caused by the content evaluating the configuration type,
  language, or location of object files:

   C:/arterym/artery/build/run_artery.sh

CMake Error in src/artery/CMakeLists.txt:
  Evaluation file to be written multiple times with different content.  This
  is generally caused by the content evaluating the configuration type,
  language, or location of object files:

   C:/arterym/artery/build/run_artery.sh

CMake Error in src/artery/CMakeLists.txt:
  Evaluation file to be written multiple times with different content.  This
  is generally caused by the content evaluating the configuration type,
  language, or location of object files:

   C:/arterym/artery/build/run_artery.sh

CMake Error in src/artery/CMakeLists.txt:
  Evaluation file to be written multiple times with different content.  This
  is generally caused by the content evaluating the configuration type,
  language, or location of object files:

   C:/arterym/artery/build/run_artery.sh

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Debug".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Release".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "MinSizeRel".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "RelWithDebInfo".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Debug".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Release".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "MinSizeRel".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "RelWithDebInfo".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Debug".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Release".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "MinSizeRel".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "RelWithDebInfo".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Debug".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Release".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "MinSizeRel".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "RelWithDebInfo".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Debug".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Release".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "MinSizeRel".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "RelWithDebInfo".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Debug".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "Release".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "MinSizeRel".

CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "RelWithDebInfo".

Generating done

Did anybody install artery on Windows successfully? Can somebody help with this?

riebl commented 3 years ago

Do you need a native build of Artery on Windows 10, or would a virtualised setup using Docker or Vagrant be suitable as well?

I have no resources to actively maintain and test Artery on Windows; however, I am happy to include the necessary patches to make our build system compatible. For example, the run_artery.sh related errors are probably easy to fix, e.g. by omitting this script on Windows and/or when particular CMake generators are used.

OrmandiTamas commented 3 years ago

Do you need a native build of Artery on Windows 10, or would a virtualised setup using Docker or Vagrant be suitable as well?

I have no resources to actively maintain and test Artery on Windows; however, I am happy to include the necessary patches to make our build system compatible. For example, the _runartery.sh related errors are probably easy to fix, e.g. by omitting this script on Windows and/or when particular CMake generators are used.

Dear Raphael, I would prefer a native version if it's possible (I also tried to install with vagrant by the tutorial just to check artery but it had some repo errors). I don't know how much effort it is to make it compatible with Windows. Unfortunatley I'm not really experienced in these builds (I had some troubles to build the required libraries too, but I managed to make them work or at least the configuration part tells me, that it found everything). Anyway if you can make it for me easily, I would really appriciate it. Otherwise don't waste your time for me :)

riebl commented 3 years ago

I am willing to support any efforts to get Artery running on Windows 10; however, I cannot take the lead on this topic because I rarely develop on Windows systems.

OrmandiTamas commented 3 years ago

Update: I managed to get rid of the errors what I had, and managed to generate with cmake. I had to omit run_artery.sh (I don't know if it will cause other problems for building the solution or not.) Also in the ROOT folder's CmakeLists.txt I added the line _unset(CMAKE_IMPORT_LIBRARYSUFFIX) which dealt with these types of errors:


CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "OmnetPP::envir" configuration
  "RelWithDebInfo".

If I try to cmake --build . I get the following:

Microsoft (R) Build Engine version 16.8.3+39993bd9d for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.

  Generating message inet/applications/base/ApplicationPacket of INET
  'C:\Users\SpitFire\src\omnetpp-5.6.2\bin\opp_msgc' is not recognized as an internal or external command,
  operable program or batch file.
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(238
,5): error MSB8066: Custom build for 'C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\e0a145bf43c310
2885a82771d9015e23\ApplicationPacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\55055
0755aa3581e7049a1a2b6905570\DHCPMessage_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\69
2aa8f4aed03bcac90fd586ca1d4c57\EtherApp_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\06
2415de0fa3a686cc2f4ba80a6c9bdd\HttpEventMessages_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMak
eFiles\062415de0fa3a686cc2f4ba80a6c9bdd\HttpMessages_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\
CMakeFiles\9b770d904514354e1c881b2b5b8f95bc\NetPerfMeter_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\bu
ild\CMakeFiles\6b723572d9ac8ebd1d578605551f3487\PacketDrillInfo_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\ar
tery\build\CMakeFiles\aa17efd337301679ae122e2193cd6a71\PingPayload_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery
\artery\build\CMakeFiles\62cb59055b2962b15735653d5e767751\GenericAppMsg_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\A
rtery\artery\build\CMakeFiles\d1a2f86e46a1a941979a2be0df465797\SimpleVoIPPacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp
-5.6.2\Artery\artery\build\CMakeFiles\5e0735a12802fadb536e6866de32501f\VoIPStreamPacket_m.cc.rule;C:\Users\SpitFire\src
\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\886c176e0749b437a5151ddea5f2963b\ByteArray_m.cc.rule;C:\Users\SpitFire\sr
c\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\886c176e0749b437a5151ddea5f2963b\RawPacket_m.cc.rule;C:\Users\SpitFire\s
rc\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\886c176e0749b437a5151ddea5f2963b\TLVOption_m.cc.rule;C:\Users\SpitFire\
src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\914649b61adcc4eee0df79e2e4f38054\PacketQueue_m.cc.rule;C:\Users\SpitFi
re\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\0558f8b9015147b6062467003d4cfdda\Material_m.cc.rule;C:\Users\SpitFi
re\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\0558f8b9015147b6062467003d4cfdda\PhysicalObject_m.cc.rule;C:\Users\
SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\8ec60c8346a5ca79ff768575588ceba4\MACFrameBase_m.cc.rule;C:\Us
ers\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\6f0ad0eecaa497cdc72ec4965b331d53\BMacFrame_m.cc.rule;C:\U
sers\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\b95f4fe0d1e4fbe2127d6797136d41e3\Ieee802Ctrl_m.cc.rule;C
:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\b95f4fe0d1e4fbe2127d6797136d41e3\SimpleLinkLayerContr
olInfo_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\c3f9bdc814da226111b021ba5dafcc4a\CS
MAFrame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\0515368360000b3261c5da0d052b86fd\C
smaCaMacFrame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\10b64b43dfff89a7777ba511d274
c027\EtherFrame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\2bf8fa61e0d1715f764709a729
a53fc5\ExtFrame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\04ecbcaf67d8a656f4174337c2
3a3244\IdealMacFrame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\73b286b50e2d6acf9f650
c6f34a52119\Ieee80211Frame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\7ce3ac0d49ddfdd
c942724e2a6ba6075\Ieee80211MgmtFrames_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\7ce3
ac0d49ddfddc942724e2a6ba6075\Ieee80211Primitives_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMak
eFiles\3a3e235d5f799eb28b3d9d60fb45f7ad\Ieee8021dBPDU_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build
\CMakeFiles\c967ea7d9a8d1e80aa440ebd4b465c26\LMacFrame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\buil
d\CMakeFiles\a051dfefe38ac9c27c0ad0d6b8fec3af\PPPFrame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\buil
d\CMakeFiles\b021370d78607f399a8b5920130d8384\XMacFrame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\bui
ld\CMakeFiles\88e2ed83732fd2d4b953418bfa829499\ARPPacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\bu
ild\CMakeFiles\47b1f4a12e584e00cb8d6511d62ccbef\NetworkDatagramBase_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Arter
y\artery\build\CMakeFiles\9362f6b51c2c09167c6697d72e540bdf\EchoPacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Art
ery\artery\build\CMakeFiles\9362f6b51c2c09167c6697d72e540bdf\IPProtocolId_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2
\Artery\artery\build\CMakeFiles\9362f6b51c2c09167c6697d72e540bdf\InterfaceEntry_m.cc.rule;C:\Users\SpitFire\src\omnetpp
-5.6.2\Artery\artery\build\CMakeFiles\9362f6b51c2c09167c6697d72e540bdf\SimpleNetworkProtocolControlInfo_m.cc.rule;C:\Us
ers\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\1504b4ff3f78e5be494d77a01491d478\NetworkProtocolCommand_m
.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\fcf7dbe3320dfe4c88122093c9d83d6a\GenericNet
workProtocolControlInfo_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\7295d053e5779e8357
ee883f5d02236b\IPv4ControlInfo_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\ade846a1b00
e234d992037a5ed127a02\IPv6ControlInfo_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\2f33
f8c6704b37e646b3db14a8726a38\DSCP_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\6a1059c4
f1c3818e73b95d3e9bc385d6\FloodDatagram_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\6bc
8f5db84f63cf85f8d7fb90c3ce183\GenericDatagram_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFi
les\333c643aa8a86f85a668132ee93fc53b\ICMPv6Message_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CM
akeFiles\333c643aa8a86f85a668132ee93fc53b\IPv6NDMessage_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\bui
ld\CMakeFiles\ed17cee3479db29c4a00edd3aafc5f5d\ICMPMessage_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\
build\CMakeFiles\ed17cee3479db29c4a00edd3aafc5f5d\IGMPMessage_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\arte
ry\build\CMakeFiles\ed17cee3479db29c4a00edd3aafc5f5d\IPv4Datagram_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\
artery\build\CMakeFiles\ed17cee3479db29c4a00edd3aafc5f5d\IPv4Route_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery
\artery\build\CMakeFiles\229c1d51d5ed2d2fe6520a9e74bbcfda\IPv6Datagram_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Ar
tery\artery\build\CMakeFiles\229c1d51d5ed2d2fe6520a9e74bbcfda\IPv6ExtensionHeaders_m.cc.rule;C:\Users\SpitFire\src\omne
tpp-5.6.2\Artery\artery\build\CMakeFiles\17f615d9d8355f2546e3d264d92412c8\LDPPacket_m.cc.rule;C:\Users\SpitFire\src\omn
etpp-5.6.2\Artery\artery\build\CMakeFiles\a841845d2ef0b88c47823af8da954733\ProbabilisticBroadcastDatagram_m.cc.rule;C:\
Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\1dfe25be89f427ad17e10ca69bc31908\IntServ_m.cc.rule;C:\U
sers\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\1dfe25be89f427ad17e10ca69bc31908\RSVPHello_m.cc.rule;C:\
Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\1dfe25be89f427ad17e10ca69bc31908\RSVPPacket_m.cc.rule;C
:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\1dfe25be89f427ad17e10ca69bc31908\RSVPPathMsg_m.cc.rul
e;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\1dfe25be89f427ad17e10ca69bc31908\RSVPResvMsg_m.cc.
rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\1dfe25be89f427ad17e10ca69bc31908\SignallingMsg_
m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\c55ff033b788bbad3d9d1c64247a8d59\LinkState
Packet_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\c55ff033b788bbad3d9d1c64247a8d59\TE
D_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\5a21f8207891ccce2a154dfd993e1d7a\WiseRou
teDatagram_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\c23d33c046ebb6baaaf9edc5cd89768
7\MobilityHeader_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\fbd08dbbee807106a8077407e
632468c\ScalarTransmission_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\d77f6971836f137
65690b638458b3766\APSKPhyFrame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\08c018c98de
54def11e451f1c4e7ed2c\FlatTransmissionBase_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles
\08c018c98de54def11e451f1c4e7ed2c\NarrowbandTransmissionBase_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\arter
y\build\CMakeFiles\08c018c98de54def11e451f1c4e7ed2c\TransmissionBase_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Arte
ry\artery\build\CMakeFiles\64e13cc8ef6e3342d9dff0ef654c3dcd\RadioControlInfo_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.
6.2\Artery\artery\build\CMakeFiles\f9ad8be6c933dd923eedc116c8f13d83\IdealTransmission_m.cc.rule;C:\Users\SpitFire\src\o
mnetpp-5.6.2\Artery\artery\build\CMakeFiles\167a9eae601a916c2feb3993805fadc7\Ieee80211OFDMPLCPFrame_m.cc.rule;C:\Users\
SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\167a9eae601a916c2feb3993805fadc7\Ieee80211PLCPFrame_m.cc.rule
;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\59924f33fb5ba64ae386cfbcd2e82050\Ieee80211ControlIn
fo_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\96fbe73c82ec9dbcd009166f28d1cdbf\AODVCo
ntrolPackets_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\7a104138b5fbce5863309c152da6e
e93\BGPCommon_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\d93a81f83303f64b4427d0633212
f01a\BGPASPathSegment_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\d93a81f83303f64b4427
d0633212f01a\BGPHeader_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\d93a81f83303f64b442
7d0633212f01a\BGPKeepAlive_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\d93a81f83303f64
b4427d0633212f01a\BGPOpen_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\d93a81f83303f64b
4427d0633212f01a\BGPUpdate_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\d93a81f83303f64
b4427d0633212f01a\BGPUpdatePathAttributes_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\
9af332bf1e5881df373e6f904c1a26b2\DYMO_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\5168
c6597fe87897d3e2b8eee4f50189\GPSR_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\54096b78
9351b15b7933fc859c0d728d\OSPFPacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\eef680
e87c3b0ad1f48947fe61ab36f3\PIMPacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\517e0
41f37cfad5f1449d0dcc26a3c17\RIPPacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\3326
07d21cfe41c0111b98fbb324fa2f\SCTPCommand_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\2
0b6f48b479479f92768cecf3a262a07\TCPCommand_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles
\b3119dcafee842c73c5646ba783a617e\UDPControlInfo_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMak
eFiles\e1462febd470218bef54065cfd511128\RTCPPacket1_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\C
MakeFiles\e1462febd470218bef54065cfd511128\RTCPPacket2_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\buil
d\CMakeFiles\e1462febd470218bef54065cfd511128\RTCPPacket3_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\b
uild\CMakeFiles\e1462febd470218bef54065cfd511128\RTPInnerPacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\ar
tery\build\CMakeFiles\e1462febd470218bef54065cfd511128\RTPInterfacePacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2
\Artery\artery\build\CMakeFiles\e1462febd470218bef54065cfd511128\RTPPacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.
2\Artery\artery\build\CMakeFiles\e1462febd470218bef54065cfd511128\RTPParticipantInfo_m.cc.rule;C:\Users\SpitFire\src\om
netpp-5.6.2\Artery\artery\build\CMakeFiles\e1462febd470218bef54065cfd511128\RTPSenderControlMessage_m.cc.rule;C:\Users\
SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\e1462febd470218bef54065cfd511128\RTPSenderStatusMessage_m.cc.
rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\22c656d5486d0159fbec0a71bbcfbdf1\RTPMpegPacket_
m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\e1462febd470218bef54065cfd511128\reports_m
.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\c3a5271920baa93466585c0ec6ed84f5\SCTPMessag
e_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\06d8e926934db8026a41e0eaa1361dd5\TCPConn
ection_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\de00428f237525023508a7dcbfa301ce\TC
PSegment_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\1857e61d4dd0451db483e44dd9473b00\
UDPPacket_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\61bf6b315dd80399d05fe1d409cd31eb
\.oppfeaturestate.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\4074ec9b653b5a7cf98d2f44a33ed
ab1\features.h.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\4074ec9b653b5a7cf98d2f44a33edab1
\opp_defines.h.rule' exited with code 9009. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\INET.vcxproj]
  common.vcxproj -> C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\lib\Debug\vanetza_common.dll
..\..\lib\Debug\vanetza_common.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x368 [C:\Users\SpitF
ire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\net\net.vcxproj]
  GeneralizedTime.c
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winbase.h(9305,5): warning C5105: macro expansion produc
ing 'defined' has undefined behavior [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\as
n1\asn1_support.vcxproj]
  PLEASE STOP AND READ!
    localtime_r is implemented via localtime(), which may be not thread-safe.
    gmtime_r is implemented via gmtime(), which may be not thread-safe.
    You must fix the code by inserting appropriate locking
    if you want to use asn_GT2time() or asn_UT2time().
  PLEASE STOP AND READ!
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(34,11): warning
 C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecatio
n, use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\e
xtern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(41,11): warning
 C4996: 'gmtime': This function or variable may be unsafe. Consider using gmtime_s instead. To disable deprecation, use
 _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\
vanetza\vanetza\asn1\asn1_support.vcxproj]
  PLEASE STOP AND READ!
    timegm() is implemented via getenv("TZ")/setenv("TZ"), which may be not thread-safe.
    You must fix the code by inserting appropriate locking
    if you want to use asn_GT2time() or asn_UT2time().
  PLEASE STOP AND READ!
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(152,2): warning
 C4013: 'setenv' undefined; assuming extern returning int [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\exte
rn\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(154,2): warning
 C4013: 'unsetenv' undefined; assuming extern returning int [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\ex
tern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(152,2): warning
 C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, us
e _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern
\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(237,14): warnin
g C4996: 'strerror': This function or variable may be unsafe. Consider using strerror_s instead. To disable deprecation
, use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\ex
tern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(325,9): warning
 C4996: '_snprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecatio
n, use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\e
xtern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(638,11): error
C2065: 'timezone': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetz
a\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(696,18): warnin
g C4244: '=': conversion from '__int64' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\art
ery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(652,9): warning
 C4996: '_snprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecatio
n, use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\e
xtern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\GeneralizedTime.c(707,9): warning
 C4996: '_snprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecatio
n, use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\e
xtern\vanetza\vanetza\asn1\asn1_support.vcxproj]
  INTEGER.c
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winbase.h(9305,5): warning C5105: macro expansion produc
ing 'defined' has undefined behavior [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\as
n1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(103,24): warning C4244:
 '=': conversion from '__int64' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\buil
d\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(152,41): warning C4244:
 'function': conversion from 'intmax_t' to 'long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\ar
tery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(156,10): error C2146: s
yntax error: missing ')' before identifier 'PRIdMAX' [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\va
netza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(156,51): error C2059: s
yntax error: ')' [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxp
roj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(168,54): error C2146: s
yntax error: missing ':' before identifier 'PRIuMAX' [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\va
netza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(169,48): error C2065: '
PRIuMAX': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\as
n1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(169,48): warning C4047:
 ':': 'char [2]' differs in levels of indirection from 'int' [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\e
xtern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(169,48): error C2143: s
yntax error: missing ')' before ':' [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn
1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(170,49): error C2059: s
yntax error: ')' [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxp
roj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(355,47): warning C4267:
 'function': conversion from 'size_t' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\arter
y\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(650,36): warning C4244:
 'function': conversion from 'uintmax_t' to 'unsigned long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2
\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(686,9): warning C4244:
'function': conversion from 'SSIZE_T' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\arter
y\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(795,53): warning C4244:
 'function': conversion from 'uintmax_t' to 'unsigned long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2
\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(811,6): warning C4244:
'function': conversion from 'SSIZE_T' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\arter
y\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(896,29): warning C4244:
 '+=': conversion from 'const intmax_t' to 'long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\ar
tery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(920,29): warning C4244:
 '+=': conversion from 'const intmax_t' to 'long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\ar
tery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(950,9): warning C4244:
'function': conversion from 'SSIZE_T' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\arter
y\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(964,50): warning C4244:
 'function': conversion from 'const intmax_t' to 'long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Art
ery\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(1043,30): warning C4244
: '=': conversion from 'const intmax_t' to 'unsigned long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\
Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(1109,6): warning C4244:
 'function': conversion from 'SSIZE_T' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\arte
ry\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(1046,1): warning C4244:
 'initializing': conversion from 'const intmax_t' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\
Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(1313,15): warning C4244
: '=': conversion from 'intmax_t' to 'long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\b
uild\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(1328,15): warning C4244
: '=': conversion from 'uintmax_t' to 'unsigned long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Arter
y\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(1580,24): warning C4244
: '=': conversion from 'intmax_t' to 'long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\b
uild\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(1587,24): warning C4244
: '=': conversion from 'intmax_t' to 'long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\b
uild\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(1610,25): warning C4244
: '=': conversion from 'uintmax_t' to 'unsigned long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Arter
y\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(1617,25): warning C4244
: '=': conversion from 'uintmax_t' to 'unsigned long', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Arter
y\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\INTEGER.c(1701,70): warning C4244
: '=': conversion from 'intmax_t' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\bu
ild\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
  NativeReal.c
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winbase.h(9305,5): warning C5105: macro expansion produc
ing 'defined' has undefined behavior [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\as
n1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(691,13): error C2065
: 'M_E': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn
1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(691,18): error C2065
: 'M_E': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn
1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(691,25): error C2065
: 'M_PI': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\as
n1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(691,31): error C2065
: 'M_PI': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\as
n1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(706,29): error C2065
: 'M_E': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn
1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(706,34): error C2065
: 'M_E': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn
1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(706,54): error C2065
: 'M_PI': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\as
n1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(706,60): error C2065
: 'M_PI': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\as
n1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(690,1): error C2099:
 initializer is not a constant [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn
1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(705,1): error C2099:
 initializer is not a constant [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn
1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\NativeReal.c(705,1): warning C430
5: 'initializing': truncation from 'double' to 'const float' [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\e
xtern\vanetza\vanetza\asn1\asn1_support.vcxproj]
  NumericString.c
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winbase.h(9305,5): warning C5105: macro expansion produc
ing 'defined' has undefined behavior [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\as
n1\asn1_support.vcxproj]
  REAL.c
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winbase.h(9305,5): warning C5105: macro expansion produc
ing 'defined' has undefined behavior [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\as
n1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(169,9): warning C4996: '_s
nprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT
_SECURE_NO_WARNINGS. See online help for details. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanet
za\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(756,40): warning C4244: '-
=': conversion from '__int64' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\
extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(816,29): warning C4244: '=
': conversion from '__int64' to 'unsigned int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\arter
y\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(819,20): warning C4244: '=
': conversion from '__int64' to 'unsigned int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\arter
y\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(672,7): warning C4101: 'as
sertion_buffer1': unreferenced local variable [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\v
anetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(673,7): warning C4101: 'as
sertion_buffer2': unreferenced local variable [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\v
anetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(836,1): warning C4244: 'in
itializing': conversion from 'double' to 'float', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\art
ery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(980,29): error C2065: 'M_E
': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_supp
ort.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(980,34): error C2065: 'M_E
': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_supp
ort.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(980,54): error C2065: 'M_P
I': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_sup
port.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(980,60): error C2065: 'M_P
I': undeclared identifier [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_sup
port.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\REAL.c(979,1): error C2099: initi
alizer is not a constant [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_supp
ort.vcxproj]
  RELATIVE-OID.c
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winbase.h(9305,5): warning C5105: macro expansion produc
ing 'defined' has undefined behavior [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\as
n1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\RELATIVE-OID.c(79,64): error C214
6: syntax error: missing ')' before identifier 'PRIu32' [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern
\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\RELATIVE-OID.c(79,58): warning C4
473: '_snprintf' : not enough arguments passed for format string [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\bui
ld\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\RELATIVE-OID.c(79,58): message :
placeholders and their parameters expect 1 variadic arguments, but 0 were provided [C:\Users\SpitFire\src\omnetpp-5.6.2
\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\RELATIVE-OID.c(79,58): message :
the missing variadic argument 1 is required by format string '%s' [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\bu
ild\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\RELATIVE-OID.c(80,51): error C205
9: syntax error: ')' [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_support.
vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\RELATIVE-OID.c(79,23): warning C4
996: '_snprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation,
use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\exte
rn\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\RELATIVE-OID.c(148,68): warning C
4244: '=': conversion from 'SSIZE_T' to 'int', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery
\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\vanetza\vanetza\asn1\support\RELATIVE-OID.c(290,47): warning C
4244: 'return': conversion from 'intmax_t' to 'asn_oid_arc_t', possible loss of data [C:\Users\SpitFire\src\omnetpp-5.6
.2\Artery\artery\build\extern\vanetza\vanetza\asn1\asn1_support.vcxproj]
  T61String.c
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winbase.h(9305,5): warning C5105: macro expansion produc
ing 'defined' has undefined behavior [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\as
n1\asn1_support.vcxproj]
  xer_support.c
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winbase.h(9305,5): warning C5105: macro expansion produc
ing 'defined' has undefined behavior [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\vanetza\as
n1\asn1_support.vcxproj]
  Generating Code...
  gnss.vcxproj -> C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\extern\vanetza\lib\Debug\vanetza_gnss.dll
  Generating message veins/base/messages/AirFrame of veins
  'C:\Users\SpitFire\src\omnetpp-5.6.2\bin\opp_msgc' is not recognized as an internal or external command,
  operable program or batch file.
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(238
,5): error MSB8066: Custom build for 'C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\2254a56d760817
93e030d2a54b3420b0\AirFrame_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\2254a56d760817
93e030d2a54b3420b0\BorderMsg_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\2254a56d76081
793e030d2a54b3420b0\MacPkt_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\ae1d395bd24668e
0253baec132caeca2\TraCIDemo11pMessage_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\7c84
c7d0b546c71cfc9378ff3988cb5e\AckTimeOutMessage_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeF
iles\7c84c7d0b546c71cfc9378ff3988cb5e\AirFrame11p_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\CMa
keFiles\7c84c7d0b546c71cfc9378ff3988cb5e\BaseFrame1609_4_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\bu
ild\CMakeFiles\7c84c7d0b546c71cfc9378ff3988cb5e\DemoSafetyMessage_m.cc.rule;C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\
artery\build\CMakeFiles\7c84c7d0b546c71cfc9378ff3988cb5e\DemoServiceAdvertisement_m.cc.rule;C:\Users\SpitFire\src\omnet
pp-5.6.2\Artery\artery\build\CMakeFiles\7c84c7d0b546c71cfc9378ff3988cb5e\Mac80211Ack_m.cc.rule;C:\Users\SpitFire\src\om
netpp-5.6.2\Artery\artery\build\CMakeFiles\7c84c7d0b546c71cfc9378ff3988cb5e\Mac80211Pkt_m.cc.rule;C:\Users\SpitFire\src
\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\7c84c7d0b546c71cfc9378ff3988cb5e\PhyControlMessage_m.cc.rule;C:\Users\Spi
tFire\src\omnetpp-5.6.2\Artery\artery\build\CMakeFiles\7c84c7d0b546c71cfc9378ff3988cb5e\TraCITrafficLightMessage_m.cc.r
ule' exited with code 9009. [C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\build\veins.vcxproj]

I guess it can't run some exe files and some of the build will be missing, causing a lot of errors later.

Update 2: If I use cmake-gui, I can set the omnet message compiler manually, so the build process will initialize it correctly. Unfortunatley I still get tons of warnings and errors. For example:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\utility(599,1): error C
2440: '=': cannot convert from '_Other' to '_Ty' [C:\arterym\artery\build\veins.vcxproj]

C:\Users\SpitFire\src\omnetpp-5.6.2\Artery\artery\extern\veins\src\veins/modules/mobility/traci/TraCICommandInterface.h
(484,32): error C2248: 'veins::HasLogProxy::owner': cannot access protected member declared in class 'veins::HasLogProx
y' [C:\arterym\artery\build\veins.vcxproj]

I don't know if it generates a full log of this. But the console is running out, so I cant paste it here and I don't even want to because it is super long. (Most of the content are warnings btw)

riebl commented 3 years ago

Have you built OMNeT++ with VC++ or with MinGW64 shipped with OMNeT++?

OrmandiTamas commented 3 years ago

Have you built OMNeT++ with VC++ or with MinGW64 shipped with OMNeT++?

With the shipped MinGW64.

riebl commented 3 years ago

Then you have to build Artery and its dependencies with MinGW64 as well, instead of MSVC. As far as I know, you cannot mix C++ libraries built with MinGW64 and MSVC.

OrmandiTamas commented 3 years ago

Then you have to build Artery and its dependencies with MinGW64 as well, instead of MSVC. As far as I know, you cannot mix C++ libraries built with MinGW64 and MSVC.

Dear Raphael, unfortunatley I can't build everything with MinGW64. Some dependencies, like boost, doesn't really like it. And then I get errors with the artery make, like it cant find a boost library version, complaining about architecture or compiler and a lot of other things. Right now I decided to hang this project, however I still need your help a bit if it's possible.

I would like to use the asn1 CAM message structure from your vanetza project in omnet with veins_inet. (I wanted to use artery because of this.) I put every asn1 related files in my omnet project. I include the CAM.h in my VeinsInetSampleApplication.cc, so I can access the CAM structure and I can fill CAM fields with values. Then I would like to encode it with the _der_encode_tobuffer() function. The problem is, that I get undefined reference error for the function. I tried to include a lot of things. I think it should be a compiler/linker problem, because omnet++ can see the function. I noticed that it won't make any obj files from .c files, maybe thats the problem? Something should be wrong with this C++ mixed with C thing, but as every header contains extern "C" {}, I think that should work.

I also tried to include the complete vanetza pack to try something similar like what I found in the built artery (I managed to build it on a virtual linux mint.) I saw that you have a wrapper around this asn1 CAM structure (which is something like a black magic for me :) ) So I would be really happy if I could just simply generate the encoded CAM message by including the asn1 CAM. Do you have any ideas?

Sorry for bothering you with this. And if it should be at the vanetza project, then I can create a topic there.

Here is a link to a picture of my error: https://imgur.com/a/uuNZwS4

riebl commented 3 years ago

You can copy the directories vanetza/asn1/support and vanetza/asn1/its to your project. These folders contain only code generated by asn1c based on the ASN.1 grammar, i.e. it is not specific to Vanetza. I ship these files with Vanetza because it can be quite cumbersome to generate the code correctly. The der_encode_to_buffer function is part of support/der_encoder.c so you need to make sure that this file (and all its siblings) is compiled and linked to your project. Otherwise, you encounter linker errors like the one you have posted. Please note that DER encoding is not the usual encoding employed for ITS communication; CAM and DENM employ UPER encoding.

OrmandiTamas commented 3 years ago

You can copy the directories vanetza/asn1/support and vanetza/asn1/its to your project. These folders contain only code generated by asn1c based on the ASN.1 grammar, i.e. it is not specific to Vanetza. I ship these files with Vanetza because it can be quite cumbersome to generate the code correctly. The der_encode_to_buffer function is part of _support/derencoder.c so you need to make sure that this file (and all its siblings) is compiled and linked to your project. Otherwise, you encounter linker errors like the one you have posted. Please note that DER encoding is not the usual encoding employed for ITS communication; CAM and DENM employ UPER encoding.

I did that exactly. My problem is, that I don't know where can I set omnetpp's compiler (clang right now) to compile and link .c source files too. I added the its and support folders just under my project's src folder and put those folders in my projects makemake options in the include path -I under compile and under link tabs. In my out folder it doesn't create any of the folders with the .o files. My generated make file looks like this:

#
# OMNeT++/OMNEST Makefile for test
#
# This file was generated with the command:
#  opp_makemake -f --deep -O out -KINET4_PROJ=../../inet4 -KVEINS_PROJ=C:/Users/SpitFire/src/veins-5.0 -DINET_IMPORT -DVEINS_IMPORT -I/its -I/support -I$$\(INET4_PROJ\)/src -I. -L$$\(INET4_PROJ\)/src -L$$\(VEINS_PROJ\)/src -l/its -l/support -lINET$$\(D\) -lveins$$\(D\) -d its -d support
#

# Name of target to be created (-o option)
TARGET = test$(D)$(EXE_SUFFIX)
TARGET_DIR = .

# User interface (uncomment one) (-u option)
USERIF_LIBS = $(ALL_ENV_LIBS) # that is, $(TKENV_LIBS) $(QTENV_LIBS) $(CMDENV_LIBS)
#USERIF_LIBS = $(CMDENV_LIBS)
#USERIF_LIBS = $(TKENV_LIBS)
#USERIF_LIBS = $(QTENV_LIBS)

# C++ include paths (with -I)
INCLUDE_PATH = -I/its -I/support -I$(INET4_PROJ)/src -I.

# Additional object and library files to link with
EXTRA_OBJS =

# Additional libraries (-L, -l options)
LIBS = $(LDFLAG_LIBPATH)$(INET4_PROJ)/src $(LDFLAG_LIBPATH)$(VEINS_PROJ)/src  -l/its -l/support -lINET$(D) -lveins$(D)

# Output directory
PROJECT_OUTPUT_DIR = ../out
PROJECTRELATIVE_PATH = src
O = $(PROJECT_OUTPUT_DIR)/$(CONFIGNAME)/$(PROJECTRELATIVE_PATH)

# Object files for local .cc, .msg and .sm files
OBJS = \
    $O/veins_inet/VeinsInetApplicationBase.o \
    $O/veins_inet/VeinsInetManager.o \
    $O/veins_inet/VeinsInetMobility.o \
    $O/veins_inet/VeinsInetSampleApplication.o \
    $O/veins_inet/camMsg_m.o \
    $O/veins_inet/msgcam_m.o \
    $O/veins_inet/VeinsInetSampleMessage_m.o

# Message files
MSGFILES = \
    veins_inet/camMsg.msg \
    veins_inet/msgcam.msg \
    veins_inet/VeinsInetSampleMessage.msg

# SM files
SMFILES =

# Other makefile variables (-K)
INET4_PROJ=../../inet4
VEINS_PROJ=C:/Users/SpitFire/src/veins-5.0

#------------------------------------------------------------------------------

# Pull in OMNeT++ configuration (Makefile.inc)

ifneq ("$(OMNETPP_CONFIGFILE)","")
CONFIGFILE = $(OMNETPP_CONFIGFILE)
else
ifneq ("$(OMNETPP_ROOT)","")
CONFIGFILE = $(OMNETPP_ROOT)/Makefile.inc
else
CONFIGFILE = $(shell opp_configfilepath)
endif
endif

ifeq ("$(wildcard $(CONFIGFILE))","")
$(error Config file '$(CONFIGFILE)' does not exist -- add the OMNeT++ bin directory to the path so that opp_configfilepath can be found, or set the OMNETPP_CONFIGFILE variable to point to Makefile.inc)
endif

include $(CONFIGFILE)

# Simulation kernel and user interface libraries
OMNETPP_LIBS = $(OPPMAIN_LIB) $(USERIF_LIBS) $(KERNEL_LIBS) $(SYS_LIBS)
ifneq ($(TOOLCHAIN_NAME),clangc2)
LIBS += -Wl,-rpath,$(abspath $(INET4_PROJ)/src) -Wl,-rpath,$(abspath $(VEINS_PROJ)/src)
endif

COPTS = $(CFLAGS) $(IMPORT_DEFINES) -DINET_IMPORT -DVEINS_IMPORT $(INCLUDE_PATH) -I$(OMNETPP_INCL_DIR)
MSGCOPTS = $(INCLUDE_PATH)
SMCOPTS =

# we want to recompile everything if COPTS changes,
# so we store COPTS into $COPTS_FILE and have object
# files depend on it (except when "make depend" was called)
COPTS_FILE = $O/.last-copts
ifneq ("$(COPTS)","$(shell cat $(COPTS_FILE) 2>/dev/null || echo '')")
$(shell $(MKPATH) "$O" && echo "$(COPTS)" >$(COPTS_FILE))
endif

#------------------------------------------------------------------------------
# User-supplied makefile fragment(s)
# >>>
# inserted from file 'makefrag':
MSGC:=$(MSGC) --msg6

ifeq ($(PLATFORM),win32.x86_64)
  #
  # on windows we have to link with the ws2_32 (winsock2) library as it is no longer added
  # to the omnetpp system libraries by default (as of OMNeT++ 5.1)
  #
  LIBS += -lws2_32
  DEFINES += -DINET_EXPORT
  ENABLE_AUTO_IMPORT=-Wl,--enable-auto-import
  LDFLAGS := $(filter-out $(ENABLE_AUTO_IMPORT), $(LDFLAGS))

endif

# <<<
#------------------------------------------------------------------------------

# Main target
all: $(TARGET_DIR)/$(TARGET)

$(TARGET_DIR)/% :: $O/%
    @mkdir -p $(TARGET_DIR)
    $(Q)$(LN) $< $@
ifeq ($(TOOLCHAIN_NAME),clangc2)
    $(Q)-$(LN) $(<:%.dll=%.lib) $(@:%.dll=%.lib)
endif

$O/$(TARGET): $(OBJS) submakedirs $(wildcard $(EXTRA_OBJS)) Makefile $(CONFIGFILE)
    @$(MKPATH) $O
    @echo Creating executable: $@
    $(Q)$(CXX) $(LDFLAGS) -o $O/$(TARGET) $(OBJS) $(EXTRA_OBJS) $(AS_NEEDED_OFF) $(WHOLE_ARCHIVE_ON) $(LIBS) $(WHOLE_ARCHIVE_OFF) $(OMNETPP_LIBS)

submakedirs:  its_dir support_dir

.PHONY: all clean cleanall depend msgheaders smheaders  its support
its: its_dir
support: support_dir

its_dir:
    cd its && $(MAKE) all

support_dir:
    cd support && $(MAKE) all

.SUFFIXES: .cc

$O/%.o: %.cc $(COPTS_FILE) | msgheaders smheaders
    @$(MKPATH) $(dir $@)
    $(qecho) "$<"
    $(Q)$(CXX) -c $(CXXFLAGS) $(COPTS) -o $@ $<

%_m.cc %_m.h: %.msg
    $(qecho) MSGC: $<
    $(Q)$(MSGC) -s _m.cc -MD -MP -MF $O/$(basename $<)_m.h.d $(MSGCOPTS) $?

%_sm.cc %_sm.h: %.sm
    $(qecho) SMC: $<
    $(Q)$(SMC) -c++ -suffix cc $(SMCOPTS) $?

msgheaders: $(MSGFILES:.msg=_m.h)
    $(Q)cd its && $(MAKE) msgheaders
    $(Q)cd support && $(MAKE) msgheaders

smheaders: $(SMFILES:.sm=_sm.h)
    $(Q)cd its && $(MAKE) smheaders
    $(Q)cd support && $(MAKE) smheaders

clean:
    $(qecho) Cleaning $(TARGET)
    $(Q)-rm -rf $O
    $(Q)-rm -f $(TARGET_DIR)/$(TARGET)
    $(Q)-rm -f $(TARGET_DIR)/$(TARGET:%.dll=%.lib)
    $(Q)-rm -f $(call opp_rwildcard, . , *_m.cc *_m.h *_sm.cc *_sm.h)
    -$(Q)cd its && $(MAKE) clean
    -$(Q)cd support && $(MAKE) clean

cleanall:
    $(Q)$(MAKE) -s clean MODE=release
    $(Q)$(MAKE) -s clean MODE=debug
    $(Q)-rm -rf $(PROJECT_OUTPUT_DIR)

# include all dependencies
-include $(OBJS:%=%.d) $(MSGFILES:%.msg=$O/%_m.h.d)

I think omnet++ just skips .c files. Workspace settings contain .c files as source files, so I don't really understand why it is not working.

riebl commented 3 years ago

Hm, opp_makemake seems to expect a common file extension, usually *.cc or *.cpp. You could simply rename all *.c files to *.cc to make things easier in that respect. Please use some tool or script for that, manually renaming each file is insane :-)

OrmandiTamas commented 3 years ago

Hm, opp_makemake seems to expect a common file extension, usually *.cc or *.cpp. You could simply rename all *.c files to *.cc to make things easier in that respect. Please use some tool or script for that, manually renaming each file is insane :-)

I tried that earlier, but it produces a tons of new errors like:


AccelerationConfidence.cc:43:4: error: use of undeclared identifier 'APC_CONSTRAINED'; did you mean 'asn_per_constraint_s::APC_CONSTRAINED'?
        { APC_CONSTRAINED,       7,  7,  0,  102 }      /* (0..102) */,
          ^~~~~~~~~~~~~~~
          asn_per_constraint_s::APC_CONSTRAINED
./per_support.h:22:3: note: 'asn_per_constraint_s::APC_CONSTRAINED' declared here
                APC_CONSTRAINED         = 0x2,  /* Fully constrained */
                ^
AccelerationConfidence.cc:44:4: error: use of undeclared identifier 'APC_UNCONSTRAINED'; did you mean 'asn_per_constraint_s::APC_UNCONSTRAINED'?
        { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
          ^~~~~~~~~~~~~~~~~
          asn_per_constraint_s::APC_UNCONSTRAINED
./per_support.h:20:3: note: 'asn_per_constraint_s::APC_UNCONSTRAINED' declared here
                APC_UNCONSTRAINED       = 0x0,  /* No PER visible constraints */
                ^ 

Fixing these errors in every .cc file would be a little painful :D

riebl commented 3 years ago

Okay, so the asn1 generated code cannot be compiled with a C++ compiler. You could compile the asn1 stuff with a separate Makefile and link them to a "standalone" library. Then, you can instruct opp_makemake to link this library to its OMNeT++ target via the -l option.

Edit: You may now understand why I am using CMake instead of opp_makemake

OrmandiTamas commented 3 years ago

Okay, so the asn1 generated code cannot be compiled with a C++ compiler. You could compile the asn1 stuff with a separate Makefile and link them to a "standalone" library. Then, you can instruct opp_makemake to link this library to its OMNeT++ target via the -l option.

Edit: You may now understand why I am using CMake instead of opp_makemake

I will try it. Yeah I definitely understand it :) I'm just really a newbie in the world of compilers. The amount of options and possibilities are really high for me right now :D Opening these makefiles make me feel like I'm reading a foreign language.

OrmandiTamas commented 3 years ago

Okay, so I created a makefile:

# Set up the compiler to use:
CC = clang

# Setup of compiler flags:
#  -g    adds debugging information to the executable file
#  -Wall turns on most, but not all, compiler warnings
CFLAGS = -g -Wall

# Variable for source directory
SOURCEDIR = sources

# Get sources from the SOURCEDIR with .c extension
SOURCES := $(shell find $(SOURCEDIR) -name '*.c')

# All header files
HEADERS := $(shell find $(SOURCEDIR) -name '*.h')

# Build directory
BUILD = lib

# Objects
OBJ = $(SOURCES:.c=.o)

# ASN1C Library
STATIC = libasn1c.a

$(STATIC): $(OBJ)
    @echo "[Link (Static)]"
    @ar rcs $@ $^

.c.o:
    @echo [Compiling] $<
    @$(CC) -c $(CFLAGS) $< -o $@ -std=gnu11

clean:
    rm -f $(OBJ) *~ core tags *.bak Makefile.bak libgeniePi.*

# A phony target is one that is not really the name of a file; rather it is just a name for a recipe to be executed when you make an explicit request. 
# There are two reasons to use a phony target: to avoid a conflict with a file of the same name, and to improve performance. 
.PHONY: .c.o

clean:
    rm -f $(OBJ) *~ core tags *.bak Makefile.bak libgeniePi.*

Which created the .o objects for me and the libasn1c.a library. I tried to add it to omnet++ with additional libraries to link (-l). Now omnet says, that it cannot find the .a file (which is weird, because I put it on the place where it is looking for it) C:\Users\SpitFire\src\omnetpp-5.6.2\tools\win64\mingw64\bin\ld: cannot find -lC:/Users/SpitFire/src/omnetpp-5.6.2/tools/win64/libs/libasn1c.a

I also tried to link with the created object files. I noticed, that the reqired .h files were appearing in the mingw environments include folder, so my code can recognize #include <CAM.h> Shall I create a .lib? A .dll? Is my makefile correct?

riebl commented 3 years ago

I think linking to a static library like libasn1c.a is the less cumbersome way to go: You don't have to worry about runtime paths to look up the library then. Your Makefile looks reasonable to me. Have you added the directory containing your library to opp_makemake by its -L option?

OrmandiTamas commented 3 years ago

I think linking to a static library like libasn1c.a is the less cumbersome way to go: You don't have to worry about runtime paths to look up the library then. Your Makefile looks reasonable to me. Have you added the directory containing your library to opp_makemake by its -L option?

I added the library path and the library itself in makemake options under compile tab Include directories and in Link tab Additional libraries to link with. So in the makemake preview: --deep -O out -IC:/Users/SpitFire/src/omnetpp-5.6.2/tools/win64/libs/ -lC:/Users/SpitFire/src/omnetpp-5.6.2/tools/win64/libs/libasn1c.a --meta:recurse --meta:export-include-path --meta:use-exported-include-paths --meta:export-library --meta:use-exported-libs --meta:feature-cflags --meta:feature-ldflags

and the modified one:

-f --deep -O out -KINET4_PROJ=../../inet4 -KVEINS_PROJ=C:/Users/SpitFire/src/veins-5.0 -DINET_IMPORT -DVEINS_IMPORT -IC:/Users/SpitFire/src/omnetpp-5.6.2/tools/win64/libs/ -I$(INET4_PROJ)/src -I. -LC:/Users/SpitFire/src/omnetpp-5.6.2/tools/win64/libs -L$(INET4_PROJ)/src -L$(VEINS_PROJ)/src -lC:/Users/SpitFire/src/omnetpp-5.6.2/tools/win64/libs/libasn1c.a -lINET$(D) -lveins$(D)

Edit: the makefile generating cmd: opp_makemake -f --deep -O out -KINET4_PROJ=../../inet4 -KVEINS_PROJ=C:/Users/SpitFire/src/veins-5.0 -DINET_IMPORT -DVEINS_IMPORT -IC:/Users/SpitFire/src/omnetpp-5.6.2/tools/win64/libs/ -I$$\(INET4_PROJ\)/src -I. -LC:/Users/SpitFire/src/omnetpp-5.6.2/tools/win64/libs -L$$\(INET4_PROJ\)/src -L$$\(VEINS_PROJ\)/src -lC:/Users/SpitFire/src/omnetpp-5.6.2/tools/win64/libs/libasn1c.a -lINET$$\(D\) -lveins$$\(D\) I also added the path to Paths and Symbols -> Library Paths

My makefile was using clang to create the library. And omnet++ uses clang++ is that a problem?

riebl commented 3 years ago

Maybe it works with -lasn1c instead of the full path? I am just guessing wildly…

OrmandiTamas commented 3 years ago

Maybe it works with -lasn1c instead of the full path? I am just guessing wildly…

Okay I think it found it. Now I get some new errors (just in case if I didn't have enough of them :) ):

C:/Users/SpitFire/src/omnetpp-5.6.2/tools/win64/libs/libasn1c.a(GeneralizedTime.o): In function `timegm':
D:\Downloads_D\vanetza-master\vanetza\asn1\build/sources/GeneralizedTime.c:152: undefined reference to `setenv'
D:\Downloads_D\vanetza-master\vanetza\asn1\build/sources/GeneralizedTime.c:154: undefined reference to `setenv'
D:\Downloads_D\vanetza-master\vanetza\asn1\build/sources/GeneralizedTime.c:154: undefined reference to `unsetenv'

I found this: https://sourceforge.net/p/asn1c/discussion/357921/thread/de1dfec6/ Lev Walkin says there:

You should not compile every .c file together. You should compile only these files which are produced by asn1c compiler.

Don't just go into skeletons directory and fetch everything. Allow asn1c compiler to work it out for you.

Shall I just exclude the GeneralizedTime.c from the library build? I feel like it's a never ending error train what Im sitting on.

riebl commented 3 years ago

Just try omitting GeneralizedTime.c then. Beware, there be dragons…

OrmandiTamas commented 3 years ago

Just try omitting GeneralizedTime.c then. Beware, there be dragons…

Dragons like it was built without errors in Omnet++ now, but the simulation fails without any error message, just saying Simulation terminated with exit code: -1073741819 ? :D I will try to go in debug mode and find out what the hell is happening. If I just use the CAM_t I can assign values to anything it runs without a problem. When I call the encode function it crashes.

EDIT: Ok problem solved! Thank you very much for your help, it works now (except uper encode fails somehow.. I have to figure that out why)! :)

khevessy commented 2 years ago

Hello @OrmandiTamas,

how did you solve the -1073741819 error? AFAIK it is 0xC0000005 in hex which is an error System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. that is equivalent to SIGSEGV (Segmentation Fault) on Linux. I am asking as I am getting the same error when trying to use CAM messages on Windows. I think your issue may be relevant as I use Vanetza, which is underlying library that Artery uses. Complete description of my issue can be found here.

Regards, Karel

OrmandiTamas commented 2 years ago

Hello @OrmandiTamas,

how did you solve the -1073741819 error? AFAIK it is 0xC0000005 in hex which is an error System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. that is equivalent to SIGSEGV (Segmentation Fault) on Linux. I am asking as I am getting the same error when trying to use CAM messages on Windows. I think your issue may be relevant as I use Vanetza, which is underlying library that Artery uses. Complete description of my issue can be found here.

Regards, Karel

Hello, unfortunatley I dont think you have the same problem. If I remember well, my issue was mainly related to OMNeT++ and not knowing how to use the CAM structure properly. Thats why I got the memory access violation errors.

khevessy commented 2 years ago

Thanks for quick response. I think the problem is not the same but the solution might be. I have found your paper about generating CAM messages directly and I think I will solve it as you did - fill in the CAM_t structure directly without using the Vanetza's wrapper classes. I might have been using the structures somehow incorrectly too.

adel0049 commented 2 months ago

Dear @OrmandiTamas , I also want to ue CAM message in Omet++ and Veins, i need to improve SB-SPS algorithm and then broadcast CAM message. I tried many way to make CAM message in Veins or use Artery in windows. it would be thankful if i can have you CAM message structure codes or if you can help e in this regard? Thanks for your time.

OrmandiTamas commented 2 months ago

Dear @OrmandiTamas , I also want to ue CAM message in Omet++ and Veins, i need to improve SB-SPS algorithm and then broadcast CAM message. I tried many way to make CAM message in Veins or use Artery in windows. it would be thankful if i can have you CAM message structure codes or if you can help e in this regard? Thanks for your time.

Dear @adel0049 ,

you can use (ASN1C) to generate the CAM structure's C++ compatible C code from the ASN1 standard. However the source is also available in many places, so you can just download it directly (like this one). What I did, is that I built a static library ( .a format on windows) from the source files, that can be linked to the OMNeT++ project. Once it is done, you can just include the CAM.h in your application code. You can fill, encode and decode the created CAM structure.