Frage

Ich habe folgende Methode in meinem Borland C ++ Code,

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

Und ich versuche, es zu DLL konvertieren und es in C # zugreifen.

Was sind die Schritte, die ich folgen müssen, den Code DLL konvertieren und verwenden Sie es dann in C # ??

War es hilfreich?

Lösung

Als erstes müssen Sie sicherstellen, dass die Methoden extern definiert sind. Dann müssen Sie die Methode stdcall oder pascal Aufrufkonvention erklären, und markieren Sie diese Dllexport. Siehe Codeliste unten (das ist alte Erinnerung für mich, also verzeihen, wenn ich ein bisschen bin weg auf moderne Borland C ++ Compiler).

// code.h
extern "C" {

#define FUNCTION __declspec(dllexport)

FUNCTION int __stdcall   SomeFunction(int Value);    

Im Haupt

#include "code.h"

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

Andere Tipps

Wenn Sie Ihre DLL alle kompiliert haben Sie benötigen, sollten in .NET zu tun, um Zugriff zu erhalten, um es die Eigenschaft DLLImport ist zu verwenden.

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

Wenn Sie Hinweise oder so etwas brauchen, dass es wird noch komplizierter, aber für nichtig Funktionen ist es so einfach.

Es ist zu beachten, dass, wenn Sie diese Funktion die DLL von Ihrem Programm geladen werden, aufrufen und wird nicht freigegeben werden, bis das Programm geschlossen wird. Sie können dynamisch DLLs laden, aber das ist viel komplizierter. Ich kann es hier erklären, wenn Sie eine Notwendigkeit.

Sehen Sie Ihre Terminologie.
In Ihrem Beispiel ist UploadBitstream Funktion keine Methode.
Wenn es in der Tat eine Methode in einer Klasse ist dann ist es sehr schwierig Klassen von Borland kompilierten DLLs zu verwenden.

Wenn Ihr Code ist eigentlich C nicht C ++ sollten Sie eine kompatible DLL erstellen können für Ihre einfache C-Stil-Funktionen mit C ++ Builder.

Sehen Sie die folgende Frage SO: Verwenden Sie eine DLL-Datei von a c ++ Programm. (Borland C ++ Builder und im allgemeinen) wo ich verschiedene Compiler-Einstellungen auflisten, die auch auf die Schaffung kompatible DLLs gelten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top