如何使用Delphi / C#解决这种非托管导出问题?

时间:2011-12-08 12:55:31

标签: c# .net delphi dll interop

我在这个Unmanaged exports上遇到了anwser技术。

  • 我可以管理自己让最简单的项目在SharpDevelop上工作,虽然我没有很好地掌握C#。
  • 我想使用Mike Gavaghan编写的优秀Gavaghan.Geodesy(。Net / C#)库。
  • 我想通过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但结果却没有导出数据。

我想念一些事情,我很困惑。

编辑:

请   - 帮我解决问题

1 个答案:

答案 0 :(得分:1)

我设法让这个像这样工作:

  1. 下载C#项目template。这需要Visual Studio,但您应该使用Express版本。
  2. 根据模板创建新项目。
  3. 构建该项目。
  4. 在Dependency Walker中加载DLL以确定它确实导出了该函数。我成功地从Delphi调用了这个函数。
  5. 请注意,查找DLL的路径为bin\Debug\x86bin\Debug中有一个DLL但没有导出。也许这就是你一直在看的东西。