2012-11-09 28 views
3

考慮下面的模型情況:導入庫<->動態鏈接庫的兼容性

  1. DLL接口沒有改變,但實現不執行。是否需要將可執行文件與新的導入庫鏈接?應用程序和DLL都使用相同的編譯器和鏈接器在相同的IDE中進行編譯和鏈接。

  2. DLL接口沒有改變,但實現不執行。應用程序和DLL的新版本在IDE 2.0版中編譯並鏈接(符號含義,例如替換爲C++ Builder XE2)。是否可以將應用程序二進制文件與在IDE 1.0版本(例如C++ Builder 6)中編譯的舊版導入庫鏈接起來?程序是否運行正常,沒有一些運行時錯誤(例如訪問違例)?

回答

2

具有相同的編譯器製造商和版本住,甚至錯位的名稱是相同的,所以你應該罰款#1。

#2就可以了,這意味着認爲它可能會,介紹名字改編的兼容性,可能咬你。如果你的出口都是「C」樣式(簡單名稱)和/或硬映射通過DEF文件到非錯位的ID,#2(或者你按順序,這似乎沒人做了這些天加載)仍然有可能。