C#dll在64位机器上运行

时间:2011-03-16 21:41:05

标签: c# 32bit-64bit

我创建了一个C#dll来使用Acrobat打印PDF。这是从Microsoft Dynamics NAV调用的。当它在32位机器上运行时,它没有任何问题。当我们在64位计算机上安装它时,我们收到以下错误

无法对成员PrintToPrinter进行调用。 OLE控件或自动化服务器返回以下消息: 请求的memeber不存在,或者调用尝试设置只读属性的值。

如何在64位Windows 7计算机上运行此操作?我将其设置为目标x86,我也尝试过为x86和x64创建的安装程序,但我一直收到相同的错误消息。

这是我的代码。

[ComVisible(true), ClassInterface(ClassInterfaceType.AutoDual)]
public class CCB_PDFPrinting
{
    public void PrintToPrinter(string FileName, string PrinterName)
    {
        Process proc = new Process();
        proc.StartInfo.CreateNoWindow = true;
        proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        proc.StartInfo.FileName = @"Acrobat.exe";
        proc.StartInfo.Arguments = "/n /t " + FileName + " \"" + PrinterName + "\"";
        proc.Start();
        proc.WaitForExit(1000);
        proc.CloseMainWindow();
        proc.Close();
    }
}

1 个答案:

答案 0 :(得分:1)

即使在 64位计算机上,您也可以将进程设置为 32位进程。

这将强制它使用32位库。

使用CorFlags.exe并设置/32bit+标记(可能作为应用程序的构建后步骤)。