Oxygene 中的 DLL 示例
有人可以告诉我在哪里可以找到如何在 Oxygene for .NET 中制作 DLL (WindowsControlLibrary) 的示例吗?
在旧的 Delphi 中,您可以创建一个导出部分。
Can somebody tell me where to find an example in how to make an DLL (WindowsControlLibrary) in Oxygene for .NET?
In the old Delphi, you make an export section.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要使用 Delphi Prism 创建非托管 DLL 导出并使用 Delphi 2010 调用它,您必须执行以下操作:
在 Delphi Prism 中:
按确定。
这将为 Windows 类库创建模板
右键单击项目“ClassLibraryX”并选择属性:
这会将项目设置为支持 UnmanagementExportAttribute。
然后在代码中您需要创建一个类方法。在下面的示例中,我添加了对 System.Windows.Forms 的引用。
使用 PEViewer,我使用 JCL 中提供的那个作为示例,您应该能够查看新的导出。在上面的例子中“ShowMessage”
To create an Unmanaged DLL Export using Delphi Prism and call it with Delphi 2010 you must do the following:
In Delphi Prism:
Press OK.
This will create the template for the Windows Class Library
Right Click on the Project "ClassLibraryX" and Select Properties:
This sets up the project to support the UnmanagedExportAttribute.
Then in the code you will need to create a class method. In the example below I added a reference to System.Windows.Forms.
Using a PEViewer, I used the one that ships as an example in JCL, you should be able to see the new export. In the above exampele "ShowMessage"
如果你想让它与delphi兼容,那么你必须指定一个“stdcall”调用约定命名
空间ClassLibrary2;
接口
类型
Class1 = 公共类
私有
受保护
公共
[UnmanagedExport('ShowMessage'), System.Runtime.InteropServices.CallingConvention.StdCall]
类方法 ShowMessage(aMsg : String);
结尾;
实现
类方法 Class1.ShowMessage(aMsg : String);
开始
System.Windows.Forms.MessageBox.Show(aMsg);
结尾;
结尾。
If you whant to make it compatible with delphi then you have to indicate a "stdcall" Calling Convention
namespace ClassLibrary2;
interface
type
Class1 = public class
private
protected
public
[UnmanagedExport('ShowMessage'), System.Runtime.InteropServices.CallingConvention.StdCall]
class method ShowMessage(aMsg : String);
end;
implementation
class method Class1.ShowMessage(aMsg : String);
begin
System.Windows.Forms.MessageBox.Show(aMsg);
end;
end.