我知道我們不應該混合使用不同版本的MSVC++編譯的代碼,除非完全隔離語言運行時和COM in-proc服務器。什麼是MSVC++中std :: type_info的前向兼容性?
但有些人認爲他們可以和轉發兼容性不是你可以提前幾年保證的東西。尤其是,該庫(2006年)使用的方案允許一個DLL跨不同編譯選項和RTL動態/靜態選擇的調用方工作,因爲動態庫始終命名爲msvcrt.dll
。現在不是這樣,所以處理它是有挑戰性的。但這不是發佈的原因。
每個人都會考慮堆函數(malloc,free,operator new等)以及跨DLL邊界傳遞指針。但是我看到了其他一些沒有得到解決的東西。也就是說,頭文件使用std::type_info
來存儲類型值(類似於語言環境方面或Boost.Any),所以隱含的假設是調用者(使用VS10)可以創建包含std::type_info
值的類的實例,編譯DLL(使用一些舊版本的編譯器)可以理解它們。
正如我回顧一下type_info
之前的實現,它使用低效的字符串比較來跨越鏈接器邊界工作。但是,這隻允許重複的靜態常量被視爲等價的 - 它仍然要求type_info的底層實現是相同的!
所以,沒有人知道發生如果結構和字段的解釋執行其中已更改,或者仍然是相同的,不同版本的RTL作爲發貨不同版本的Visual Studio?即使沒有確切的答案,我也希望以任何方式瞭解經驗。
我也看到在標頭中使用std::string
。 <嘆>