Delphi调用非托管dll运行良好,但C#没有;t

本文关键字:没有 调用 运行 dll Delphi | 更新日期: 2023-09-27 18:19:49

我看到了一些关于我的问题的主题,但它们对我的帮助不太清楚。

我的问题是:我有一个Delphi7应用程序,它从第三部分调用外部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文件时,当应用程序调用方法C500pchar时,它会崩溃。我试着从Release和Debug文件夹中复制所有文件,甚至从文件夹中运行exe,但当我从VS.运行时,它就可以工作了

我做错什么了吗?

编辑:我正在使用Windows7并面临这个问题。但我试过在WindowsXPSP3上运行,运行得很好。

Delphi调用非托管dll运行良好,但C#没有;t

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