如何使用Delphi/ c#解决这个非托管导出问题

本文关键字:出问题 Delphi 何使用 解决 | 更新日期: 2023-09-27 18:17:05

我在SO的回答中遇到了非托管导出技术。

  • 我可以管理自己在SharpDevelop上工作的最简单的项目,尽管我没有一个很好的c#命令。
  • 我想用优秀的Gavaghan。Geodesy (. net/c#)库由Mike Gavaghan编写。
  • 我想通过COM避免互操作性。
  • 我肯定用Delphi。我只想用它来驾驭库。

我设法构建了以下代码:

using System;
using System.Collections.Generic;
using System.Text;
using RGiesecke.DllExport;
namespace DelphiNET
{
    internal static class UnmanagedExports
{
    [DllExport("add", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
    public static int add(int left, int right) {
        return left + right;            
        }
    }
}

我用Delphi进行了测试,但是没有结果。

我用PE编辑器检查了输出dll,但结果发现根本没有导出数据。

我错过了一些东西,我很困惑。

编辑:

请-帮我解决这个问题

如何使用Delphi/ c#解决这个非托管导出问题

我设法使它像这样工作:

    下载c#项目模板。这需要Visual Studio,但是使用Express版本应该没问题。
  1. 根据模板创建新项目
  2. 在Dependency Walker中加载DLL,看看它是否确实导出了函数。从Delphi中调用函数成功。

注意,查找DLL的路径是bin'Debug'x86。有一个DLL在bin'Debug,但这没有出口。也许这就是你一直在看的