背景:我正在構建一個大型仿真框架的插件。我正在編譯一個使用Visual Studio C++ 2010的DLL。給出段錯誤的多個CRT
經過大量的搜索和搜索之後,我相信我有一個問題源於有多個版本的CRT鏈接到我的DLL。我在(來自msvcr100.dll)中獲得了段錯誤,在函數_CRTIMP PFLS_GETVALUE_FUNCTION __cdecl __set_flsgetvalue()
中。閱讀this線程(有多個問題討論,但最後提到這個功能)是我的想法,如果我檢查我的項目的鏈接部分,我看到msvcr90.dll
,'msvcp100d.dll and
msvcr100d.dll`。
我正在使用幾個外部庫,並且我已經能夠使用VS2010重新編譯除了其中一個以外的所有庫。但最後一個不是開源的(它是一個屬於框架的庫),我想這就是依賴關係的來源。但我不確定,我怎麼能檢查這個?
鑑於我關於依賴關係的來源,我該怎麼做?
您可以使用Dependency Walker來查看該DLL依賴於什麼。 – sharptooth
如果您構建發佈版本(或使用剩餘依賴項的調試版本),則可能會有問題。混合調試和釋放不會起作用,但有時可以混合使用不同版本的CRT DLL。 –