我有一個非託管的C++項目,當鏈接器庫(Properties-> Linker-> Input-> Additional Dependencies)按特定順序列出,但在更改庫的順序時運行正常時會產生運行時錯誤。我明白爲什麼訂單可能導致鏈接錯誤(Why does the order in which libraries are linked sometimes cause errors in GCC?),但它怎麼可能導致運行時錯誤?我在VS2005,2008和2010中觀察到了這一點。爲什麼鏈接庫的順序會導致運行時錯誤?
回答
什麼樣的運行時錯誤?你不說,所以我們必須猜測。
下面是運行時錯誤可能發生的一種方式:如果兩個不相關的庫公開具有相同名稱的不同函數,則鏈接器將選擇它找到的第一個實現。
如果你打算叫draw()
從paint.lib
,但gunfight.lib
早些時候在鏈接列表,你會調用錯誤draw()
,後果不堪設想。
謝謝,我不知道,我認爲鏈接器會在這種情況下投訴。我沒有指定運行時錯誤,因爲我不知道如何在沒有提供大量上下文的情況下呈現它們。我會調查你的建議是否是原因。 – themik81 2013-03-14 10:04:28
是的,準系統錯誤可能不會幫助;它將不得不被蒸餾器變成「錯誤的功能被稱爲」之類的東西。這裏有一個想法:通常連接器具有「詳細」參數,這些參數將以痛苦的細節傳遞他們正在做的事情。找出適用於您的特定工具集的參數,並將它用於兩個鏈接訂單。通過diff工具運行輸出,看看有沒有什麼突出的。請讓我們知道它是如何變成這樣或那樣。祝你好運。 – 2013-03-14 11:03:10
- 1. 爲什麼此異常不會導致運行時錯誤?
- 2. 這段代碼爲什麼會導致運行時錯誤?
- 3. 爲什麼有時用.so文件鏈接會導致鏈接器錯誤?
- 4. 爲什麼簡單地鏈接到GL會導致段錯誤?
- 5. 是什麼導致iOS鏈接錯誤?
- 6. 什麼可能會導致Vb6運行時錯誤430
- 7. 爲什麼會在後續運行中導致錯誤?
- 8. 爲什麼OCR(MODI.MiLANGUAGES.miLANG_ENGLISH,true,true)會導致OCR運行錯誤?
- 9. 爲什麼我的asp.net導致運行時錯誤?
- 10. 爲什麼我的代碼導致運行時錯誤?
- 11. 爲什麼使用WordPress永久鏈接時Facebook Like按鈕會導致錯誤?
- 12. 爲什麼在使用printf語句時__thread會導致鏈接器錯誤?
- 13. 爲什麼會導致「exc_bad_access」錯誤?
- 14. 爲什麼它會導致錯誤?
- 15. 爲什麼這會導致SIGABRT錯誤?
- 16. 這爲什麼會導致StackOverFlow錯誤?
- 17. 爲什麼StreamReader.readexactly()會導致套接字錯誤,但不會導致StreamReader.read()?
- 18. 爲什麼nil/NULL塊在運行時會導致總線錯誤?
- 19. C程序鏈接錯誤:是什麼導致這些?
- 20. 爲什麼Netbeans加載Java庫的順序有時會導致錯誤?我如何避免它?
- 21. 爲什麼我的鏈接列表代碼導致鏈接錯誤?
- 22. 爲什麼vbScript「和」運算符會導致溢出錯誤?
- 23. 爲什麼懶鏈接選項會導致clang「非法數據引用」錯誤?
- 24. 爲什麼調用指令會導致運行時不穩定?
- 25. 爲什麼Ant以錯誤的順序在testng.xml中運行testclasses?
- 26. 這個程序爲什麼會有運行時錯誤?
- 27. 這個程序爲什麼會導致段錯誤?
- 28. 這個程序爲什麼會導致段錯誤?
- 29. 什麼導致Flash/actionscript運行時錯誤「WatcherSetupUtil未定義」?
- 30. 什麼導致數組越界運行時錯誤?
您是混合編譯器版本還是調試和發佈? – drescherjm 2013-03-13 11:13:43
不,所有的庫都是由相同的編譯器以相同的風格構建的。 – themik81 2013-03-13 11:27:36