VS 編譯CEF,鏈接錯誤:error LNK2038: 檢測到“_MSC_VER”的不匹配項: 值“1800”不匹配值“1900”

原文鏈接:https://blog.csdn.net/moyebaobei1/article/details/83054417

最近重新編譯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版本就可以通過了。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章