FreePascal 64位DLL并调用C#Application
|
我正在尝试编译用于64位C#应用程序的64位dll。我有一个简单的类和一个简单的应用程序来尝试对其进行测试,无论我尝试做什么,它都会失败。这是代码:
德尔斐
library project1;
{$mode objfpc}{$H+}
uses
Classes;
function Encrypt(aName:PChar):PChar;stdcall;
begin
Result := aName;
end;
exports Encrypt;
begin
end.
C#
[DllImport(\"project1.dll\")]
[return: MarshalAs(UnmanagedType.LPStr)]
public static extern String Encrypt([MarshalAs(UnmanagedType.LPStr)] String aName);
任何人都可以看到它有什么问题,并且如果不愿意创建相同的简单方案来尝试使其正常工作,我将束手无策了!
没有找到相关结果
已邀请:
1 个回复
坝镰补翔奋
返回,C#编组人员知道如何编组和处置dis4ѭ,并且可以访问COM分配器。我不知道在FreePascal中使用
,但是在Delphi中,您只是使用
。您还需要告诉C#编组您要返回
。 我个人比较喜欢选项2。但是有一个折衷,就是不同的编译器对函数返回值使用不同的ABI,如在此问题上所讨论的:为什么不能将WideString用作互操作的函数返回值?解决此问题的简单方法是在参数中返回字符串,而不是使用函数返回值。 代码如下: 帕斯卡
C#