У меня есть приложение, которое вызывает Win32 Dll, написанное на Delphi. Мое приложение разработано на C# и работает под IIS. Я могу успешно вызвать Delphi Dll для каждой версии Windows с сервера 2003 года, за исключением Windows Server 2012. Вызов внешнего метода не возвращает никаких ошибок и ничего не содержится в журнале ошибок. Он просто никогда не возвращает никаких данных.Вызов Win32 Dll из C# на Windows Server 2012
В моей C# Я заявляю:
[DllImport("MyTest.dll", CharSet = CharSet.Unicode,
CallingConvention = CallingConvention.StdCall)]
public static extern void Encrypt(string szPlainText, StringBuilder szCipherText);
Я затем вызвать функцию со следующим:
StringBuilder encText = new StringBuilder(128);
StringBuilder plainString = new StringBuilder("test");
Encrypt(plainString.ToString(), encText);
Что-то изменилось в WinServer 2012, что бы остановить это работать?
Delphi код, который у меня есть доступ к выглядит следующим образом:
procedure Encrypt(szPlainText: PChar; szCipherText : PChar) ; stdcall ; export;
var
sTemp : String ;
sPlainText : String ;
cipher : TCipher ;
begin
cipher := TLogixCipher.Create ;
sPlainText := szPlainText ;
sTemp := cipher.Encrypt(sPlainText) ;
StrPCopy(szCipherText,sTemp);
FreeAndNil(cipher) ;
end;
«Ничего не изменилось?»: Я ничего не слышал.Если у вас есть символы для компонента Delphi, вы можете включить собственную отладку и пройти через вызов P/Invoke. – Richard
Просьба показать декларацию функции Delphi. Кроме того, код вызова C#, который вы представляете, является неполным. Пожалуйста, покажите больше. –
У меня нет доступа к функции Delphi на данный момент. Это не то, что я разработал – keitn