Domanda

Ho il seguente metodo nel mio codice C ++ Borland,

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

E sto provando a convertirlo in DLL e ad accedervi in ??C #.

Quali sono i passaggi che devo seguire per convertire il codice DLL e poi usalo in C # ??

È stato utile?

Soluzione

Innanzitutto, devi assicurarti che i metodi siano definiti esternamente. Quindi è necessario dichiarare il metodo stdcall o pascal chiamando convention e contrassegnarli come dllexport. Vedi l'elenco dei codici qui sotto (questa è un'antica memoria per me, quindi scusami se sono un po 'fuori dai moderni compilatori Borland C ++).

// code.h
extern "C" {

#define FUNCTION __declspec(dllexport)

FUNCTION int __stdcall   SomeFunction(int Value);    

In generale

#include "code.h"

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

Altri suggerimenti

Dopo aver compilato la tua DLL tutto ciò che dovresti fare in .NET per accedervi è usare la proprietà DLLImport.

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

Se hai bisogno di puntatori o qualcosa del genere diventa più complicato, ma per funzioni nulle è così semplice.

Va ??notato che una volta richiamata quella funzione, la dll verrà caricata dal programma e non verrà rilasciata fino alla chiusura del programma. Puoi caricare dinamicamente le dll ma questo è molto più complicato. Posso spiegarlo qui se ne hai bisogno.

Guarda la tua terminologia.
Nel tuo esempio UploadBitstream non è una funzione, un metodo.
Se si tratta effettivamente di un metodo in una classe, è molto difficile utilizzare le classi delle DLL compilate da Borland.

Se il tuo codice è in realtà C non C ++, dovresti essere in grado di creare una DLL compatibile per le tue semplici funzioni in stile C con C ++ Builder.

Vedi la seguente domanda SO: Utilizza una dll da un programma c ++. (borland c ++ builder e in generale) dove elenco le varie impostazioni del compilatore che si applicheranno anche alla creazione di DLL compatibili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top