我正在使用名爲「Aspen Custom Modeler」的專有化學模擬軟件包。 (ACM)ACM natiely有一個COM接口,您可以使用它來驅動它。 AspenTech希望有人使用Visual Basic與ACM進行交互,但我並不喜歡VB,而是使用C#。這給我帶來了各種麻煩。COMException導致「對象引用未設置爲對象的實例」
我最新的問題是,ACM將拋出一個例外,即使在正常使用情況下可能出現的簡單錯誤也是如此。我有一個數據集無法收斂。 ACM拋出一個COMException,STS_F_Failure。在Visual Basic中,我得到了正確的類型,但在C#中,出於某種原因,我得到了「對象引用未設置爲對象的實例」異常。
我的猜測是Interop庫沒有正確的異常類型。有誰知道一種方法,我可以得到例外的正確類型?
它似乎並不該HRESULT對應於空指針的任何代碼相匹配的很好的解釋。 HRESULT爲189,Errlook返回「操作系統無法運行%1」。此外,我還得到了同一個庫中其他函數的異常的NullPointer異常,我很確定它們的類型不同。 – Jim 2012-03-12 22:56:30
不幸的是,tlbimp似乎並沒有像ACM的良好接口那樣產生任何東西。 (編譯時綁定完全被破壞了。)所以使用tlbimp生成一個新的互操作庫沒有幫助。我懷疑寫自己的想法是一個好主意,因爲我真的對接口一無所知。 (這是專有的。)所以,我想我抓住了異常,並假裝我知道它是什麼。 – Jim 2012-03-12 23:01:49