當我嘗試爲一個非常簡單的COM服務器運行一個非常簡單的COM客戶端時,我收到各種錯誤,這是我在C++中編寫的。 COM服務器是用C++編寫的,只有一個方法「GetSomeString」。我內置的COM服務器的OCX,使用regsrv32註冊它,然後從下面的C#控制檯應用程序中引用它:無法運行一個非常簡單的COM客戶端
using MySimpleActivexControlLib;
namespace SimpleConsoleApp
{
class Program
{
static void Main(string[] args)
{
var c = new MySimpleActivexControlLib.MySimpleActivexControl();
c.GetSomeString();
}
}
}
當我運行代碼,我得到以下異常:
An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll
Additional information: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
我試圖從一個C++控制檯應用程序使用該組件,並得到了另一個錯誤:
... Microsoft C++ exception: _com_error at memory location 0x002bf5e4 ...
完整的代碼可被視爲here。 任何幫助將不勝感激。
您是否考慮過使用調試器來查看爲什麼會引發異常? –
@RaymondChen感謝您的回覆。在C#控制檯中,一旦引發異常,這是運行堆棧的頂部: 1. mscorlib.dll!System.RuntimeType.ForwardCallToInvokeMember(string memberName,System.Reflection.BindingFlags標誌,對象目標,int [] aWrapperTypes, ref [System.Runtime.Remoting.Proxies.MessageData msgData)+ 0x183 bytes 2. [Native to Managed Transition] 3. [Managed to Native Transition] 4. SimpleConsoleApp.exe!SimpleConsoleApp.Program.Main(string [] args )第11行+ 0x9字節\t C# 編輯:抱歉的格式不對,我試圖格式化堆棧幀更加理智。 – JohnnyW
我也嘗試在VirtualBox上運行Windows 7的全新安裝,然後安裝VS 2010(作爲唯一的軟件安裝),並且仍然出現相同的錯誤。 – JohnnyW