首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oxygene中的DLL示例

Oxygene中的DLL示例
EN

Stack Overflow用户
提问于 2009-10-28 22:32:59
回答 2查看 2K关注 0票数 0

谁能告诉我在哪里可以找到如何为.NET在Oxygene中制作动态链接库(WindowsControlLibrary)的示例?

在旧的Delphi中,您创建了一个导出部分。

EN

回答 2

Stack Overflow用户

发布于 2009-10-29 08:13:31

要使用Delphi Prism创建非托管DLL导出并使用Delphi 2010调用它,您必须执行以下操作:

在Delphi Prism中:

  1. 文件|新建|项目
  2. 在左侧的树状视图中,选择Delphi Prism
  3. 选择类库

按OK。

这将为Windows类库创建模板

在项目"ClassLibraryX“上单击鼠标右键,然后选择属性:

  1. 在Compatibility下选择"Allow unsafe code“
  2. 在Build下找到General部分并将CPU类型更改为”x86“
  3. 右键单击创建的"ClassLibraryX”选项卡并选择"Save selected Items"

这将设置项目以支持UnmanagedExportAttribute

然后,您需要在代码中创建一个类方法。在下面的示例中,我添加了对System.Windows.Forms的引用。

代码语言:javascript
复制
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.

使用JCL中附带的PEViewer作为示例,您应该能够看到新的导出。在上面的示例中,"ShowMessage“

票数 2
EN

Stack Overflow用户

发布于 2010-08-14 02:50:06

如果你想让它与delphi兼容,那么你必须指定一个"stdcall“调用约定

命名空间ClassLibrary2;

接口

类型Class1 =公共类

私有

受保护

公共的

System.Runtime.InteropServices.CallingConvention.StdCall,UnmanagedExport('ShowMessage')

类方法ShowMessage(aMsg : String);end;

实现

类方法Class1.ShowMessage(aMsg : String);

开始

System.Windows.Forms.MessageBox.Show(aMsg);

结束;

结束。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1637643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档