Question

J'ai la méthode suivante dans mon code Borland C ++,

static bool UploadBitstream(void)
{
   //Some code Implementation
}

Et j'essaie de le convertir en DLL et d'y accéder en C #.

Quelles sont les étapes que je dois suivre pour convertir la DLL de code et ensuite l'utiliser en C # ??

Était-ce utile?

La solution

Tout d’abord, vous devez vous assurer que les méthodes sont définies avec extern. Ensuite, vous devez déclarer la méthode stdcall ou la convention d’appel pascal et les marquer comme suit. Voir la liste de code ci-dessous (ceci est une mémoire ancienne pour moi, alors excusez-moi si je suis un peu en retrait sur les compilateurs Borland C ++ modernes).

// code.h
extern "C" {

#define FUNCTION __declspec(dllexport)

FUNCTION int __stdcall   SomeFunction(int Value);    

Dans la partie principale

#include "code.h"

FUNCTION int __stdcall SomeFunction(int timesThree)
{
    return timesThree * 3;
}

Autres conseils

Une fois que vous avez compilé votre DLL, tout ce que vous devez faire dans .NET pour y accéder est d'utiliser la propriété DLLImport.

public class stuff
{
    [DLLImport("somedll.dll")]
    public static extern void UploadBitstream();
}

Si vous avez besoin de pointeurs ou de quelque chose du genre, cela devient plus compliqué, mais pour les fonctions void, c'est aussi simple que cela.

Il convient de noter qu’une fois que vous appelez cette fonction, la dll sera chargée par votre programme et ne sera pas publiée tant que votre programme ne sera pas fermé. Vous pouvez charger dynamiquement des dll mais cela est beaucoup plus compliqué. Je peux l'expliquer ici si vous avez un besoin.

Surveillez votre terminologie.
Dans votre exemple, UploadBitstream est une fonction et non une méthode.
S'il s'agit bien d'une méthode dans une classe, il est très difficile d'utiliser les classes à partir des DLL compilées par Borland.

Si votre code est en fait du C et non du C ++, vous devriez pouvoir créer une DLL compatible. pour vos fonctions de style C simples avec C ++ Builder.

Voir la question SO suivante: Utiliser une dll à partir de un programme c ++. (constructeur borland c ++ et en général) où je liste divers paramètres de compilateur qui s’appliquent également à la création de DLL compatibles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top