Qt庫說明了跨主要版本的二進制兼容性。但是,不同編譯器之間的兼容性呢?編譯器之間的qt dll兼容性
例如,我有一個應用程序和2倍的DLL使用Qt(動態鏈接)。但其中一個是用MSVC和另一個用MinGW構建的。因此,它們與不同版本的Qt庫(相同版本)相關聯。
問題是:這些DLL可以使用一個共享的Qt DLL一起工作嗎? 如果沒有,那麼考慮到更改編譯器不是一種選擇,哪種解決方法是可能的?
我看了看Qt的DLL文件與Dependency Walker中,我看到有幾十個具有編譯器scpecific名稱重整導出的函數。所以看起來不可能讓他們一起工作。
***但是對於不同的編譯器之間的兼容性如何?***他們是因爲超過1個CRT(會引起你的隨機找堆損壞)和不同的執行標準庫(也UB)不兼容。 – drescherjm
是的,但只能使用一個Qt dll - >因此只有一個Qt CRT。 –
Qt可能來自一個編譯器,但我認爲這兩個.dll使用Qt甚至是C++標準庫。如果出現這種情況,您將擁有跨越CRT邊界和不兼容的ABI問題的對象。 – drescherjm