我正在使用名为“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