在本教程第二部分的最後,我們遇到一個小問題,但確切地說,那實際上是一個大問題。如果有時間的話,這個問題應該值得我們花大精力去研究。
還記得我們是怎麼遇到那個問題嗎?當時,我們先編譯ActiveXDLL,然後編譯使用該DLL的測試程式。接著,我們重新編譯DLL,那是因為假設DLL中的內容需要修改。然而,再執行測試程式時,卻出現錯誤!
是的,肯定不能這樣。
因為經驗告訴我們,這是一個相容性問題。所以,可以這樣處理:
啟動VisualBasic,打開Northwind工程;
選擇"PRoject"->"NorthwindProperties"選單;
點選"Component"標籤;
瀏覽一下"VersionCompatibility"的頁面內容,可以發現有三個選項。現解說明:
NoCompatibility-每次編譯時,使用者COM元件都會標示一個新的標記,這表示程式只能使用舊標記(先前版本)的DLL。
ProjectCompatibility-每次編譯時,使用者COM元件不是總是會被標示一個新的標記。如果是的話,任何目前使用的應用程式都會失敗。事實上,只有噹噹前工程和已經編譯過的DLL工程有較大不同時才會這樣。
BinaryCompatibility-每次編譯時,應用程式總是試圖保存前一個編譯過的DLL標記,這樣就確保了使用的應用程式不會出現藍色畫面的死機現象。但是,若目前將要編譯的DLL和先前編譯過的DLL差異太大,則新的標記就會被標上。
讓我們測試一下上述論點:
打開本教程上一部分的測試程序;
重新編譯一下;
試運行一下,應該能正常運作;
開啟ActiveXDLL工程;
將其屬性設定為BinaryCompatibility;
重新編譯一下該DLL;
試運行測試程序,應該可以正常運作。
好了,看起來似乎解決了問題。但當重新編譯DLL後,大多數開發人員將會陷入另一種不相容的境地。
難道沒有更好的解決方法嗎?我們暫時將這個問題放到一邊!
您可造訪下列網站以獲得更多的內容:
www.PylonOfTheMonth.co.uk.->