我有一個靜態S.lib,由我的D.dll使用。使用#pragma detect_mismatch確保DLL使用正確的靜態鏈接庫
我正在嘗試使用#pragma detect_mismatch來確保兩者都是在相同的發行版或調試設置下編譯的。
我跟着霍爾格薩斯格倫德說明這裏 http://boost.2283326.n4.nabble.com/Boost-and-Microsoft-s-SECURE-SCL-td3025203.html
DUMPBIN上S.lib顯示:
Linker Directives
-----------------
/FAILIFMISMATCH:"COMPILED_DEBUG=1"
/INCLUDE:_dll_impl_interface_mismatch_check
/DEFAULTLIB:"MSVCRTD"
/DEFAULTLIB:"OLDNAMES"
我編譯D.dll成功,這是不應該的。在D.dll的D.lib
DUMPBIN顯示:
Linker Directives
-----------------
/FAILIFMISMATCH:"COMPILED_DEBUG=2"
/INCLUDE:_dll_impl_interface_mismatch_check
/DEFAULTLIB:"uuid.lib"
/DEFAULTLIB:"uuid.lib"
/FAILIFMISMATCH:"_MSC_VER=1600"
/FAILIFMISMATCH:"_ITERATOR_DEBUG_LEVEL=2"
/DEFAULTLIB:"msvcprtd"
/DEFAULTLIB:"MSVCRTD"
/DEFAULTLIB:"OLDNAMES"
任何幫助將不勝感激。
編輯:
我意外地定義了。在我的靜態庫的符號「dll_impl_interface_mismatch_check」和我的消費DLL。這意味着符號在靜態庫S.lib中沒有找到,並且從來沒有找到不匹配指令。我認爲。
什麼你問?問題是什麼? – Erik 2011-04-15 17:59:37
也許你應該添加實際的'#pragma detect_mismatch'行來嘗試使用它。當然,正如Erik已經說過的那樣,澄清你到底想知道什麼,因爲這也不完全清楚。 – 2011-04-15 18:39:54
「我成功編譯D.dll,這不應該發生。」實際的detect_mismatch行並不重要。 – 2011-04-15 18:43:29