C # dll работает на 64-битной машине - PullRequest
2 голосов
/ 17 марта 2011

Я создал C # dll для печати PDF-файлов с помощью Acrobat. Это называется из Microsoft Dynamics NAV. Когда это выполняется на 32-битной машине, это работает без проблем. Когда мы устанавливаем его на 64-битную машину, мы получаем следующую ошибку

Не удалось вызвать членство PrintToPrinter. Элемент управления OLE или сервер автоматизации возвратил следующее сообщение: Запрашиваемый член не существует, или при попытке установить значение свойства только для чтения.

Что я могу сделать, чтобы заставить это работать на 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 Ответ

1 голос
/ 20 июня 2011

Вы можете настроить запуск процесса как 32 бит даже на 64 бит машине.

Это заставит его использовать ваши 32-битные библиотеки.

Используйте CorFlags.exe и установите флаг /32bit+ (возможно, как шаг после сборки вашего приложения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...