有人能告诉我在哪里可以找到如何在 Oxygene 中为 .NET 制作 DLL(WindowsControlLibrary)的示例吗?
在旧的 Delphi 中,您创建了一个导出部分。
2 回答
要使用 Delphi Prism 创建非托管 DLL 导出并使用 Delphi 2010 调用它,您必须执行以下操作:
在德尔福棱镜中:
- 文件 | 新 | 项目
- 在左侧的树视图中,选择 Delphi Prism
- 选择 Windows 类库
按确定。
这将为 Windows 类库创建模板
右键单击项目“ClassLibraryX”并选择属性:
- 在兼容性下选择“允许不安全代码”
- 在 Build 下,找到 General 部分并将 CPU Type 更改为“x86”
- 右键单击已创建的“ClassLibraryX”选项卡,然后选择“保存所选项目”
这会将项目设置为支持 UnmanagedExportAttribute。
然后在代码中你需要创建一个类方法。在下面的示例中,我添加了对 System.Windows.Forms 的引用。
namespace ClassLibrary2;
interface
type
Class1 = public class
private
protected
public
[UnmanagedExport('ShowMessage')]
class method ShowMessage(aMsg : String);
end;
implementation
class method Class1.ShowMessage(aMsg : String);
begin
System.Windows.Forms.MessageBox.Show(aMsg);
end;
end.
使用 PEViewer,我以JCL中的示例为例,您应该能够看到新的导出。在上面的例子中“ShowMessage”
如果你想让它与 delphi 兼容,那么你必须指出一个“stdcall”调用约定
命名空间类库2;
界面
类型 Class1 = 公共类
私人的
受保护
上市
[UnmanagedExport('ShowMessage'),System.Runtime.InteropServices.CallingConvention.StdCall]
类方法 ShowMessage(aMsg : String); 结尾;
执行
类方法 Class1.ShowMessage(aMsg : String);
开始
System.Windows.Forms.MessageBox.Show(aMsg);
结尾;
结尾。