【发布时间】:2011-12-08 12:55:30
【问题描述】:
我在 SO 上的 anwser 中遇到了 Unmanaged exports 技术。
- 我可以管理自己在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,但结果根本没有导出数据。
我错过了一些东西,我很困惑。
编辑:
请 - 帮我解决问题
【问题讨论】:
-
你调查过RemObjects Hydra吗?我没有使用它,但我已经为一个项目调查过它。它看起来很棒,并且可以让您轻松地在 Delphi 和 .Net 之间进行互操作。
-
您提供了很多的背景信息,这些信息似乎与您的要求无关。如果你真的询问它是如何工作的,你可以删除几乎所有你写的东西,然后问它是如何工作的。但是,如果您只是询问它是如何工作的,因为您认为答案会帮助您使您的程序正常工作,那么您应该直接询问如何让您的程序正常工作。如果需要了解非托管导出的工作原理,那么无论如何都会有人的答案包含该信息,因此如果它不是您真正想要的,则无需询问。
-
@David M:专有解决方案不适合我。
-
您使用的是哪个 C# 编译器?
-
@Rob Kennedy:我提供它们以供审查(可能有问题),也作为我之前努力的证据(通常在 SO 上需要)。
标签: c# .net delphi dll interop