我有一个调用用 Delphi 编写的 Win32 Dll 的应用程序。我的应用程序是用 C# 开发并在 IIS 下运行的。除了 Windows Server 2012 之外,我可以在 Server 2003 以上的每个 Windows 版本上成功调用 Delphi Dll。对外部方法的调用不会返回任何错误,错误日志中也没有任何内容。它只是从不返回任何数据。
在我的 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;