我正在構建一個.msi,它是指用C++編寫的自定義動作DLL。我可以在Visual Studio 2010中構建自定義動作DLL,一切正常 - 引用wcautil.h,dutil.h等。當我將.msi添加到DLL時,但是(它正確地獲取二進制表和鍵等顯得合理),它就會死在自定義DLL中第一次引用ExitOnFailure。我猜這意味着wcautil.lib不會與DLL/.msi一起出現,但我不知道爲什麼會這樣 - DLL包含wcautil_2010.lib(以及dutil_2010.lib和msi .lib)在附加的庫依賴關係列表中(它們來自模板VS項目)wix MSI自定義動作DLL死於wcautil函數
任何人都知道如何判斷wcaUtil和dutil是否實際存在.msi?或者我需要做些什麼來確保它們在WiX上的Wca功能執行?
我想DLL必須靜態鏈接。 MSI提取DLL並運行它,它不會自動提取您依賴的DLL。它可能是未初始化的變量/指針嗎? – 2012-04-02 06:32:41
如何靜態鏈接DLL?我前幾天看了一遍,有人說這是不可能的。我確實看到VS.vcxproj文件包含對'additional linkage dependencies'區域中必要庫的引用,並且libs存在於$(WIX)sdk \ lib下。 – 2012-04-02 16:59:23
@DaveCombs它聽起來像你的項目已經設置爲wcautil和dutil(Wix CA項目設置了這個)的靜態鏈接。如果您正在運行第一次調用'ExitOnFailure'的代碼,那麼您的鏈接就OK了。你遇到了什麼錯誤?你怎麼確定你會遇到'ExitOnFailure'?你有沒有試過附加一個調試器? – heavyd 2012-04-02 19:20:11