最近重新編譯CEF,發生如下錯誤
1>libcef_dll_wrapper.lib(cef_logging.obj) : error LNK2038: 檢測到“_MSC_VER”的不匹配項: 值“1800”不匹配值“1900”(BrowserApp.obj 中)
1>libcef_dll_wrapper.lib(browser_host_ctocpp.obj) : error LNK2038: 檢測到“_MSC_VER”的不匹配項: 值“1800”不匹配值“1900”(BrowserApp.obj 中)
1>libcef_dll_wrapper.lib(libcef_dll_wrapper.obj) : error LNK2038: 檢測到“_MSC_VER”的不匹配項: 值“1800”不匹配值“1900”(BrowserApp.obj 中)
1>libcef_dll_wrapper.lib(process_message_ctocpp.obj) : error LNK2038: 檢測到“_MSC_VER”的不匹配項: 值“1800”不匹配值“1900”(BrowserApp.obj 中)
1>libcef_dll_wrapper.lib(command_line_ctocpp.obj) : error LNK2038: 檢測到“_MSC_VER”的不匹配項: 值“1800”不匹配值“1900”(BrowserApp.obj 中)
1>libcef_dll_wrapper.lib(v8value_ctocpp.obj) : error LNK2038: 檢測到“_MSC_VER”的不匹配項: 值“1800”不匹配值“1900”(BrowserApp.obj 中)
大概找了下答案,是因爲不同平臺編譯的靜態庫,鏈接的時候不兼容導致的。VS的編譯器對不同版本編譯的二進制庫不兼容。簡單說,cef目標平臺是vs2013版本,如果用vs2017版本編譯2017平臺的版本是不成功的,不知道微軟爲什麼要做成這樣。
解決辦法至少有兩種,向上或者向下。
向上需要重新編譯目標平臺的靜態庫,不如原來CEF make 目標平臺vs2013, 現在希望編譯vs2017版本,所以CEF需要重新make ,編譯出vs2017版本的靜態庫,然後鏈接編譯,就通過了。
向下,只要把va2017的平臺工具集調整到vs2013版本就可以通過了。