我想知道,是否調用放置在.dll中的代碼,使用不同的工具鏈構建該代碼?並且正在使用一個.lib文件與一個較舊的編譯器一起構建一個更新的代碼。使用不同編譯器的版本構建的混合二進制文件
我知道,第二個是不可取的,但我想知道,這是不可能的。
正是我的情況是這樣的:
我a.exe
文件使用b.lib
文件,該文件也與VC7.1內置VC7.1建。 a.exe
來自c.dll
的調用代碼也是使用b.dll
構建的。現在我想寫一個新的c.dll
,但用VC9編譯它。 (我想這樣做,因爲我需要一些不支持使用VC7.1構建它們的庫。) - 我的c.dll
也需要b.lib
,我仍然有它的來源,因此我可以重新編譯它。
那麼,是否有可能使其工作?如果不是,你能提供一個簡短的解釋,究竟是什麼不允許這樣做?
一個大問題是你會得到一個不同的CRT,這意味着你得到一個不同的堆。這會導致解除分配問題。 – drescherjm