64 位平台上的 COM

本文关键字:COM 平台 | 更新日期: 2023-09-27 17:56:32

我正在使用带有 C# 的第三方 COM 库,在 32 位 XP 上一切正常。我使用 tlbimp 创建包装器,添加引用都可以工作。但是,当移植到我们的服务器环境(64位Windows Server 2008)时,我遇到了障碍。

下面的代码只有在我右键单击并测试它时才能正常运行,即在 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);

64 位平台上的 COM

尝试使用 COM+ 作为主机,并将应用程序编译为 64 位。有关更多信息,请参阅此链接

听起来第三方

COM DLL只有32位。 您必须将应用配置为仅以 32 位而不是任何 CPU 运行。