我在C#中使用第三方COM庫,在32位XP上都能正常工作。我使用tlbimp來創建包裝,添加一個引用所有作品。但是,當移植到64位Windows Server 2008的服務器環境時,我遇到了一個障礙。COM在64位平臺
下面的代碼只在右鍵單擊並測試它時運行正常,即在VS環境中運行。代碼在編譯到控制檯應用程序時不起作用,也不在代碼中工作,無論是在測試中還是從控制檯應用程序調用。爲了讓它工作,我以管理員身份運行,並在32位命令窗口中運行 - 仍然沒有任何石斑魚總是空,並且沒有拋出異常,表明GrpSvr.GrpCall是一個有效的Com庫名稱。
string sMessage = "no grouper";
GrpSvr.GrpCall grouper = Activator.CreateInstance(
Type.GetTypeFromProgID("GrpSvr.GrpCall")) as GrpSvr.GrpCall;
if (grouper != null)
sMessage = grouper.GroupInit(@"C:\CmdGrp.txt", true, true);
Console.WriteLine(sMessage);
您是否試圖將32位DLL加載到64位進程? – Gabe 2011-05-17 02:16:31
您是否有任何證據證明此COM庫在64位Server 2008上正常工作? – Gabe 2011-05-17 03:32:37
@Gabe,每件事都設置爲x86目標,並且我已經強制控制檯應用程序從32位命令窗口運行。也許我錯過了一些東西,但我不知道什麼 – MrTelly 2011-05-17 10:25:35