Project

General

Profile

Actions

Support Request #13479

closed

Error compiling examples from Display Toolbox

Added by hidden about 3 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Customer:
CARIAD
Department:
G3-3
Requester's Priority:
Normal
Support Level:
3rd Level
Resolution:
Solved Issue
Platform:
Windows 10 64bit
Topic:
DeviceTB::Common
FAQ Links:

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)

Was bedeutet die Warnung mit "base_DIR"?

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.

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?

Ich nehme an du baust die Examples wieder self-contained (so wie den Drawer) ?
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 "")
Actions #1

Updated by hidden about 3 years ago

  • Status changed from New to In Progress
  • Topic set to DeviceTB::Common
Actions #4

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)
Actions #5

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.

Actions #6

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?

Actions #7

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,

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.

Sorry, die Frage habe ich im ersten Schuss übersehen...
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.

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?

Ich nehme an du baust die Examples wieder self-contained (so wie den Drawer) ?
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 "")
Actions #9

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.

Actions #10

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
Actions #12

Updated by hidden almost 3 years ago

  • Customer changed from Car.SW Org. to CARIAD
Actions #16

Updated by hidden over 2 years ago

  • Status changed from To Be Closed to Closed
Actions

Also available in: Atom PDF