Oxygene中的DLL示例

时间:2009-10-28 14:32:59

标签: .net dllexport oxygene

有人可以告诉我在哪里可以找到如何在Oxygene for .NET中制作DLL(WindowsControlLibrary)的例子吗?
在旧的Delphi中,您可以创建导出部分。

2 个答案:

答案 0 :(得分:2)

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

在Delphi Prism中:

  1. 文件|新的|项目
  2. 在左侧树视图中,选择Delphi Prism
  3. 选择Windows类库
  4. 按OK。

    这将为Windows类库创建模板

    右键单击项目“ClassLibraryX”并选择属性:

    1. 在兼容性下选择“允许不安全代码”
    2. 在Build下,找到General Section并将CPU Type更改为“x86”
    3. 右键单击已创建的“ClassLibraryX”选项卡,然后选择“保存所选项目”
    4. 这会设置项目以支持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”

答案 1 :(得分:1)

如果你想让它与delphi兼容,你必须指出一个“stdcall”呼叫约定

namespace ClassLibrary2;

界面

型   Class1 =公共类

私人

受保护

公共

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

类方法ShowMessage(aMsg:String);   结束;

实施

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

开始

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

端;

端。