0
我想使用gcc 4.7編譯C++應用程序,並且此應用程序與使用gcc 4.4編譯的庫鏈接。我只想知道它是否沒有問題?使用gcc編譯應用程序,它與使用不同gcc版本編譯的庫不同gigcc
我想使用gcc 4.7編譯C++應用程序,並且此應用程序與使用gcc 4.4編譯的庫鏈接。我只想知道它是否沒有問題?使用gcc編譯應用程序,它與使用不同gcc版本編譯的庫不同gigcc
答案是:它取決於。這不是真正的編譯器或系統特定的。例如,它也適用於Visual Studio。
基本上,這樣做不應該有任何問題(這是一個相當典型的情況)。
但是,重要的問題是,這兩個二進制文件之間傳遞了什麼樣的數據。
例如,如果所有字符串都作爲char *
傳遞,那麼一切都很好。一旦你通過了std::string
(或者只是一個指針或引用),那麼當兩個文件之間的實現發生改變時(例如不同的STL實現或只是改變了對齊),事情就會中斷。
對於其他的東西,甚至是你自己定製的結構和類也是如此。如果界面經過精心設計,應該沒有任何問題。如果界面沒有考慮這種情況,那麼你可能會遇到非常困難或幾乎不可能調試的問題(隨機崩潰,堆棧對齊問題等)。
只爲自己嘗試一下,看看。 –