如何使用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,但结果发现根本没有导出数据。
我错过了一些东西,我很困惑。
编辑:请-帮我解决这个问题
我设法使它像这样工作:
- 下载c#项目模板。这需要Visual Studio,但是使用Express版本应该没问题。
- 根据模板创建新项目
- 在Dependency Walker中加载DLL,看看它是否确实导出了函数。从Delphi中调用函数成功。
注意,查找DLL的路径是bin'Debug'x86
。有一个DLL在bin'Debug
,但这没有出口。也许这就是你一直在看的