Delphi调用非托管DLL工作正常,但C#没有

时间:2012-01-10 11:31:57

标签: c# delphi dll unmanaged dllimport

我已经看到了一些关于我的问题的话题,但他们并不是很清楚地帮助我。

我的问题是:我有一个Delphi 7应用程序调用外部dll,来自第三部分(我无法访问源代码)。我正在尝试将Delphi代码转换为C#(.NET 2.0)。

这是调用dll的delphi代码:

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

这是我调用相同dll的C#代码:

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

当我从Visual Studio 2005运行它时,这个C#代码正常工作,但是当我尝试运行exe文件时,它会在应用程序调用Method C500pchar时崩溃。我试图从Release和Debug文件夹中复制所有文件,甚至从文件夹中运行exe,但是当我从VS运行时它才起作用。

我做错了吗?

编辑:我正在使用Windows 7并面临此问题。但我尝试在Windows XP SP3上运行并且工作正常。

1 个答案:

答案 0 :(得分:3)

您的项目在visual studio中以32位模式运行,但在直接运行时以64位模式运行。您必须更改项目设置,使其在 x86 中运行,而不是任何cpu