0

Ich versuche derzeit, eine Software zu implementieren, die auf dem Chromium Embedded Framework (CEF) basiert.CEF - Build Tests mit MDd

Die Plattform, die ich anvisiere, ist Windows und ich benutze die neueste Version von den CEF Automated Builds (zum Datum dieses Beitrags).

Aus Kompatibilitätsgründen mit anderen Projekten, ich brauche die Laufzeitbibliothek als /MDd und /MD für Debug und Freigabe jeweils und beschlossen, geben Sie die bereitgestellten Beispiele zu testen-zu bauen. Ich habe auch die Make-Routinen verwendet, wie im CEF-Leitfaden angegeben.

Um dies zu tun, habe ich die Datei cef_variables.cmake geändert. Insbesondere habe ich geändert, um die CEF_COMPILER_FLAGS_DEBUG und CEF_COMPILER_FLAGS_RELEASE zu

list(APPEND CEF_COMPILER_FLAGS_DEBUG 
    /MDd   # Multithreaded debug runtime 
    /RTC1   # Disable optimizations 
    /Od   # Enable basic run-time checks 
) 
list(APPEND CEF_COMPILER_FLAGS_RELEASE 
    /MD   # Multithreaded release runtime 
    /O2   # Optimize for maximum speed 
    /Ob2   # Inline any suitable function 
    /GF   # Enable string pooling 
) 

Die Standardfahnen /MTd und /MT sind.

Wenn die Standardmarkierungen verwendet es scheint kein Problem und sowohl die libcef_dll_wrapper und die cefclient Projekte einfach gut zusammenstellen zu können.

Wenn jedoch die geänderten Flags verwenden, bin ich nur in der Lage, die libcef_dll_wrapper bauen beim Aufbau cefclient führt den folgenden Linkfehler

Severity Code Description Project File Line Suppression State 
Error LNK2038 mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in binding_test.obj cefclient D:\Workspace\CEF\build\tests\cefclient\cef_sandbox.lib(at_exit.obj) 

Die Ausgabe vom Cmake Befehl

-- The C compiler identification is MSVC 19.0.24215.1 
-- The CXX compiler identification is MSVC 19.0.24215.1 
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio                                                14.0/VC/bin/cl.exe 
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio                                                14.0/VC/bin/cl.exe -- works 
-- Detecting C compiler ABI info 
-- Detecting C compiler ABI info - done 
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studi                                                o 14.0/VC/bin/cl.exe 
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studi                                                o 14.0/VC/bin/cl.exe -- works 
-- Detecting CXX compiler ABI info 
-- Detecting CXX compiler ABI info - done 
-- Detecting CXX compile features 
-- Detecting CXX compile features - done 
-- *** CEF CONFIGURATION SETTINGS *** 
-- Generator:     Visual Studio 14 2015 
-- Platform:      Windows 
-- Project architecture:   x86 
-- Binary distribution root:  D:/Workspace/CEF 
-- CEF Windows sandbox:   ON 
-- Visual Studio ATL support: ON 
-- Standard libraries:   comctl32.lib;rpcrt4.lib;shlwapi.lib;ws2_32.lib;                                                dbghelp.lib;psapi.lib;version.lib;winmm.lib 
-- Compile defines:    __STDC_CONSTANT_MACROS;__STDC_FORMAT_MACROS;WIN                                                32;_WIN32;_WINDOWS;UNICODE;_UNICODE;WINVER=0x0601;_WIN32_WINNT=0x601;NOMINMAX;WI                                                N32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0;PSAPI_VERSION=1;CEF_USE_SANDBOX;CEF_USE_ATL 
-- Compile defines (Debug): 
-- Compile defines (Release): NDEBUG;_NDEBUG 
-- C compile flags:    /MP;/Gy;/GR-;/W4;/WX;/wd4100;/wd4127;/wd4244;/w                                                d4481;/wd4512;/wd4701;/wd4702;/wd4996;/Zi 
-- C compile flags (Debug):  /MDd;/RTC1;/Od 
-- C compile flags (Release): /MD;/O2;/Ob2;/GF 
-- C++ compile flags:   /MP;/Gy;/GR-;/W4;/WX;/wd4100;/wd4127;/wd4244;/w                                                d4481;/wd4512;/wd4701;/wd4702;/wd4996;/Zi 
-- C++ compile flags (Debug): /MDd;/RTC1;/Od 
-- C++ compile flags (Release): /MD;/O2;/Ob2;/GF 
-- Exe link flags:    /MANIFEST:NO;/LARGEADDRESSAWARE 
-- Exe link flags (Debug):  /DEBUG 
-- Exe link flags (Release): 
-- Shared link flags: 
-- Shared link flags (Debug): /DEBUG 
-- Shared link flags (Release): 
-- CEF Binary files:    chrome_elf.dll;d3dcompiler_43.dll;d3dcompiler_4                                                7.dll;libcef.dll;libEGL.dll;libGLESv2.dll;natives_blob.bin;snapshot_blob.bin 
-- CEF Resource files:   cef.pak;cef_100_percent.pak;cef_200_percent.pak                                                ;cef_extensions.pak;devtools_resources.pak;icudtl.dat;locales 
-- Configuring done 
-- Generating done 
-- Build files have been written to: D:/Workspace/CEF/build 

Was fehlt mir hier? Ich dachte, wenn ich die Makrovariablen ändere, würden alle Projekte mit den gleichen Einstellungen erstellt werden und somit ohne Fehler kompilieren.

Antwort

1

ich weiter forschen habe, und ich habe festgestellt, dass bei der Verwendung des automatisierten baut, verwendet es die offizielle cef_sandbox.lib, die die /MTd und /MT Laufzeit verwendet.

Mein fix war die macro_variables zu ändern und USE_SANDBOX als OFF gesetzt. Ich habe immer noch einige Fehler, aber jetzt cefclient korrekt kompilieren

Verwandte Themen