2009-10-28 15 views
0

Quelqu'un peut-il me dire où trouver un exemple pour créer une DLL (WindowsControlLibrary) dans Oxygene for .NET?
Dans l'ancien Delphi, vous créez une section d'exportation.Exemple de DLL dans Oxygene

Répondre

2

Pour créer un Delphi en utilisant Export DLL non géré Prism et l'appeler avec Delphi 2010, vous devez effectuer les opérations suivantes:

Dans Delphi Prism:

  1. Fichier | Nouveau | Projet
  2. Dans l'arborescence de gauche, sélectionnez Delphi Prism
  3. Sélectionnez Windows Bibliothèque de classes

Appuyez sur OK.

Cela va créer le modèle pour la bibliothèque de Windows classe

Cliquez droit sur le projet « ClassLibraryX » et sélectionnez Propriétés:

  1. Sous compatibilité sélectionnez « Autoriser code non sécurisé »
  2. Sous Construire, trouver la section générale et changer le type de CPU en "x86"
  3. Cliquez avec le bouton droit de la souris sur l'onglet "ClassLibraryX" qui a été créé et sélectionnez "Enregistrer les éléments sélectionnés"

Ceci configure le projet pour prendre en charge le .

Ensuite, dans le code, vous devrez créer une méthode de classe. Dans l'exemple ci-dessous, j'ai ajouté une référence à 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. 

L'utilisation d'un PEViewer, j'utilise celui qui est livré à titre d'exemple dans JCL, vous devriez être en mesure de voir la nouvelle exportation. Dans le exampele ci-dessus "ShowMessage"

+0

Merci. J'ai créé une ClassLibrary simple avec une procédure, mais lorsque j'essaie de lire à partir d'une application Delphi2010, elle ne trouve pas l'entrée. Devrait-il être possible? Cela signifie-t-il que seuls les autres Prism2010 peuvent accéder à la DLL? Je voudrais accéder à la DLL, à partir d'une application Delphi2010 –

+0

Mis à jour la réponse à Afficher ce que j'ai fait pour créer une exportation. –

1

Si vous whant pour le rendre compatible avec delphi, vous devez indiquer un "stdcall" Calling Convention

espace de noms ClassLibrary2;

Interface

Type Class1 = public class

privé

protégé

publique

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

méthode de classe ShowMessage (aMsg: String); fin;

mise en œuvre

méthode de classe Class1.ShowMessage (aMsg: String);

commencent

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

end;

fin.