Support Request #13479
closedError compiling examples from Display Toolbox
Description
Supportanfrage
Ich habe aus den Display-Toolbox-Examples "videodrawer" herauskopiert und mit cmake konfiguriert:
-- The C compiler identification is MSVC 19.16.27044.0 -- The CXX compiler identification is MSVC 19.16.27044.0 -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found OpenGL: opengl32 -- Could NOT find base (missing: base_DIR) -- Configuring done -- Generating done -- Build files have been written to: C:/Users/u2phprb/Desktop/videodrawer/build
Beim Bauen erhalte ich:
...\videodrawer\video_drawer.cpp(18): error C2065: 'DISPTB_VERSION_MAJOR': undeclared identifier
Was mache ich hier falsch? Ich stelle mir vor, solche Example-Projekte als Absprungbasis nutzen zu können.
Was bedeutet die Warnung mit "base_DIR"?
Lösung
Im Source File des Drawers, wenn das Plugin erzeugt wird (ADTF_PLUGIN_VERSION) wird die Version der Display TB gesetzt.
Die darin verwendeten Makros kommen aus der root cmake Datei der Toolbox.
Da du nicht den Weg darüber gehst, stehen diese nicht zur Verfügung -> Build crasht (normaler C++/CMake Problem, die IDE müsste auch warnen dass unbekannt).
Da du diese Versionstrings aber denke ich nicht verwendest sondern eigene Versionierung, kannst du das für deinen Drawer/Template gleich abändenr, zb:
ADTF_PLUGIN_VERSION("Demo 2D Video Drawer Plugin",
disptb,
0,
8,
15,
cVideoDrawer)
Es handelt sich hierbei um das pkg base der Display TB, das ist ein internes CMake Problem, ich habe dafür ein Ticket angelegt, damit das Warning behoben wird:Was bedeutet die Warnung mit "base_DIR"?
- [ADISTB-1141] - Warning that base_DIR could no be found
Spielt für dich aber keine Rolle.
Ich nehme an du baust die Examples wieder self-contained (so wie den Drawer) ?Beim Bauen mit
-DCMAKE_BUILD_TYPE=Release
erhalte ich hingegen Release/Debug-Konflikte. Offensichtlich wird "drawerd.lib", "graphicsd.lib" gegen die Release-Lib gelinkt:drawerd.lib(drawer.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj drawerd.lib(drawer.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj drawerd.lib(drawer_manager.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj drawerd.lib(drawer_manager.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj graphicsd.lib(image.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj graphicsd.lib(image.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj graphicsd.lib(color.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj graphicsd.lib(color.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj Creating library video_drawer.lib and object video_drawer.exp LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library drawerd.lib(drawer.obj) : error LNK2019: unresolved external symbol __imp__invalid_parameter referenced in function "void * __cdecl std::_Allocate_manually_vector_aligned<struct std::_Default_allocate_traits>(unsigned __int64)" (??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z) ...Wißt ihr, was ich hier falsch mache?
Unsere Lieferungen beinhalten immer RelWithDebInfo und Debug targets, d.h. CMake kommt hier durcheinander wenn du Release oder MinSizeRel bauen möchtest:
- Build type Release ? OK ich suche mal nach Release... RelWithDebInfo ? Kenn ich nicht, dann muss es das andere sein -> debug -> Linker Error
Um dem Abhilfe zu schaffen, mappen wir den sämtliche optimierten Targets, wenn du allerdings nicht von der Haupt Cmake losgehst, geht dir das verloren:
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo Release MinSizeRelease "") set(CMAKE_MAP_IMPORTED_CONFIG_RELEASE Release RelWithDebInfo MinSizeRelease "") set(CMAKE_MAP_IMPORTED_CONFIG_MINSIZEREL MinSizeRelease Release RelWithDebInfo "")
Updated by hidden about 3 years ago
- Status changed from New to In Progress
- Topic set to DeviceTB::Common
Updated by hidden about 3 years ago
- Status changed from In Progress to Customer Feedback Required
Hallo Patrick,
im Source File des Drawers, wenn das Plugin erzeugt wird (ADTF_PLUGIN_VERSION) wird die Version der Display TB gesetzt.
Die darin verwendeten Makros kommen aus der root cmake Datei der Toolbox.
Da du nicht den Weg darüber gehst, stehen diese nicht zur Verfügung -> Build crasht (normaler C++/CMake Problem, die IDE müsste auch warnen dass unbekannt).
Da du diese Versionstrings aber denke ich nicht verwendest sondern eigene Versionierung, kannst du das für deinen Drawer/Template gleich abändenr, zb:
ADTF_PLUGIN_VERSION("Demo 2D Video Drawer Plugin",
disptb,
0,
8,
15,
cVideoDrawer)
Updated by hidden about 3 years ago
Danke. Ich kann ja die Definitions im CMakeLists.txt hinzufügen.
Wie sieht es mit meiner Frage bezgl. "base_DIR" aus? Hat das mit ADTF zu tun? Es scheint etwas zu fehlen, trotzdem wird (scheinbar) durchkonfiguriert.
Updated by hidden about 3 years ago
Das Bauen mit -DCMAKE_BUILD_TYPE=Debug
klappt. Auch die Plugin-Descr. wird erzeugt. Das weitere Example "objectmixin" macht ebenso keine Probleme, auch wenn hier das "base_DIR" beim Konfigurieren komischerweise nicht erscheint.
Beim Bauen mit -DCMAKE_BUILD_TYPE=Release
erhalte ich hingegen Release/Debug-Konflikte. Offensichtlich wird "drawerd.lib", "graphicsd.lib" gegen die Release-Lib gelinkt:
drawerd.lib(drawer.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj drawerd.lib(drawer.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj drawerd.lib(drawer_manager.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj drawerd.lib(drawer_manager.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj graphicsd.lib(image.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj graphicsd.lib(image.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj graphicsd.lib(color.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj graphicsd.lib(color.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj Creating library video_drawer.lib and object video_drawer.exp LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library drawerd.lib(drawer.obj) : error LNK2019: unresolved external symbol __imp__invalid_parameter referenced in function "void * __cdecl std::_Allocate_manually_vector_aligned<struct std::_Default_allocate_traits>(unsigned __int64)" (??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z) ...
Wißt ihr, was ich hier falsch mache?
Updated by hidden about 3 years ago
- Resolution set to Product Issue Opened
- Product Issue Numbers set to https://www.cip.audi.de/jira/browse/ADISTB-1141
- Support Level changed from 2nd Level to 3rd Level
Hallo Patrick,
Sorry, die Frage habe ich im ersten Schuss übersehen...Wie sieht es mit meiner Frage bezgl. "base_DIR" aus? Hat das mit ADTF zu tun? Es scheint etwas zu fehlen, trotzdem wird (scheinbar) durchkonfiguriert.
Es handelt sich hierbei um das pkg base der Display TB, das ist ein internes CMake Problem, ich habe dafür ein Ticket angelegt, damit das Warning behoben wird:
- [ADISTB-1141] - Warning that base_DIR could no be found
Spielt für dich aber keine Rolle.
Ich nehme an du baust die Examples wieder self-contained (so wie den Drawer) ?Beim Bauen mit
-DCMAKE_BUILD_TYPE=Release
erhalte ich hingegen Release/Debug-Konflikte. Offensichtlich wird "drawerd.lib", "graphicsd.lib" gegen die Release-Lib gelinkt:drawerd.lib(drawer.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj drawerd.lib(drawer.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj drawerd.lib(drawer_manager.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj drawerd.lib(drawer_manager.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj graphicsd.lib(image.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj graphicsd.lib(image.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj graphicsd.lib(color.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in video_drawer.cpp.obj graphicsd.lib(color.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in video_drawer.cpp.obj Creating library video_drawer.lib and object video_drawer.exp LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library drawerd.lib(drawer.obj) : error LNK2019: unresolved external symbol __imp__invalid_parameter referenced in function "void * __cdecl std::_Allocate_manually_vector_aligned<struct std::_Default_allocate_traits>(unsigned __int64)" (??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z) ...Wißt ihr, was ich hier falsch mache?
Unsere Lieferungen beinhalten immer RelWithDebInfo und Debug targets, d.h. CMake kommt hier durcheinander wenn du Release oder MinSizeRel bauen möchtest:
- Build type Release ? OK ich suche mal nach Release... RelWithDebInfo ? Kenn ich nicht, dann muss es das andere sein -> debug -> Linker Error
Um dem Abhilfe zu schaffen, mappen wir den sämtliche optimierten Targets, wenn du allerdings nicht von der Haupt Cmake losgehst, geht dir das verloren:
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo Release MinSizeRelease "") set(CMAKE_MAP_IMPORTED_CONFIG_RELEASE Release RelWithDebInfo MinSizeRelease "") set(CMAKE_MAP_IMPORTED_CONFIG_MINSIZEREL MinSizeRelease Release RelWithDebInfo "")
Updated by hidden about 3 years ago
Ich nehme an du baust die Examples wieder self-contained (so wie den Drawer) ?
Ja, genau. Wieder ein Example als Absprungbasis.
Unsere Lieferungen beinhalten immer RelWithDebInfo und Debug targets
OK, das erklärt natürlich alles. Läuft hier auch prima mit "RelWithDebInfo" durch. Das Build-Type-Mapping kann man ja für das eigene Projekt einfach übernehmen.
Dann wären alle meine Fragen beantwortet. Danke! Das Ticket kann geschlossen werden.
Updated by hidden about 3 years ago
- Project changed from 11 to Public Support
- Subject changed from Example mit CMake bauen to Error compiling examples from Display Toolbox
- Description updated (diff)
- Status changed from Customer Feedback Required to To Be Closed
- Private changed from Yes to No
- Resolution changed from Product Issue Opened to Solved Issue
Updated by hidden almost 3 years ago
- Customer changed from Car.SW Org. to CARIAD