我對這個問題的含糊性表示歉意。如何解決COM組件問題?
在將應用程序遷移到新服務器環境的過程中,爲應用程序公開API的COM組件(.dll)文件已停止工作。
有沒有什麼辦法可以排除COM組件的故障?是否有COM組件記錄錯誤的標準方式(Windows事件查看器中沒有事件)?我能以任何方式「檢查」一個組件嗎?
我已經成功地使用regsvr32.exe註冊了組件(除了創建一些Windows註冊設置之外,我不知道這實際上做了什麼)。
Martijn
我對這個問題的含糊性表示歉意。如何解決COM組件問題?
在將應用程序遷移到新服務器環境的過程中,爲應用程序公開API的COM組件(.dll)文件已停止工作。
有沒有什麼辦法可以排除COM組件的故障?是否有COM組件記錄錯誤的標準方式(Windows事件查看器中沒有事件)?我能以任何方式「檢查」一個組件嗎?
我已經成功地使用regsvr32.exe註冊了組件(除了創建一些Windows註冊設置之外,我不知道這實際上做了什麼)。
Martijn
這種形式的故障診斷有2個部分。
首先使用SYS內部的procmon。 SYS internals這顯示了嘗試打開COM服務器的進程的strace樣行爲。
查看失敗的函數調用。
接下來我會嘗試直接在調試器中加載COM控件,看不到任何故障有
爲從procmon結果將顯示在註冊表中的位置和文件位置其中的關鍵是加載COM對象。
失敗可能是: -
prog.exe
轉到64位,它將無法加載32位com DLL您可以在調試器中加載任何DLL。調試符號使它更容易,但我們試圖發現錯誤,它在調用中的例外
謝謝!通過'試圖打開COM服務器',你的意思是客戶端連接到.dll,因爲它在哪裏?調試控件是否需要COM組件的調試版本,或者該術語在此不適用?我必須承認,我幾乎不瞭解COM。 –
非常感謝您的詳細解答。 –
它是您寫的COM組件還是您使用的COM組件? – Bruce
@Bruce謝謝你的回覆。這是一個由第三方編寫的COM組件,不幸的是它不能提供幫助。兩種環境都(看起來)是相同的。 –