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
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:
- Fichier | Nouveau | Projet
- Dans l'arborescence de gauche, sélectionnez Delphi Prism
- 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:
- Sous compatibilité sélectionnez « Autoriser code non sécurisé »
- Sous Construire, trouver la section générale et changer le type de CPU en "x86"
- 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"
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.
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 –
Mis à jour la réponse à Afficher ce que j'ai fait pour créer une exportation. –