Delphi, вызывающая неуправляемую dll, работает нормально, а C # - нет - PullRequest
3 голосов
/ 10 января 2012

Я видел некоторые темы по моей проблеме, но они не были так ясны, чтобы помочь мне.

Моя проблема: у меня есть приложение Delphi 7, которое вызывает внешнюю DLL из третьей части (которая не имеет доступа к источнику). Я пытаюсь преобразовать код Delphi в C # (.NET 2.0).

Вот код delphi для вызова dll:

function C500pchar(Comando : pchar):Integer; stdcall; external 'c50032.dll' name 'C500';

Вот мой код C # для вызова той же DLL:

[DllImport("C50032.DLL", CallingConvention = CallingConvention.StdCall, EntryPoint = "C500")]
    static extern int C500pchar(StringBuilder Comando);

Этот код C # работает нормально, когда я запускаю его из Visual Studio 2005, но когда я пытаюсь запустить exe-файл, он падает, когда приложение вызывает метод C500pchar. Я попытался скопировать все файлы из папок Release и Debug и даже запустить exe из папок, но он работает только при запуске из VS.

Я что-то не так делаю?

РЕДАКТИРОВАТЬ: я работаю над Windows 7 и сталкиваюсь с этой проблемой. Но я пробовал работать на Windows XP SP3 и работал нормально.

1 Ответ

3 голосов
/ 10 января 2012

Ваш проект работает в 32-битном режиме в Visual Studio, но в 64-битном режиме при непосредственном запуске.Вы должны изменить настройки проекта, чтобы он работал в x86 вместо любого процессора .

...