Domanda

Non sono così buono in c ++ ma,.. Ad esempio, ho questo

#define GETSomthing_API  __declspec(dllexport)
extern GETSomthing_API int nGetSomthing;
.

E il metodo che voglio importare come questo

GETSomthing_API  int GetSomthing(const char* szConfigPath, char *A, int B)
.

Come posso chiamarlo da C #?

accanto, Penso che il mio problema sia con il tipo di parametro (Const Char *) nel lato C ++, qual è il tipo uguale in c # per esso!Charm *

Grazie,

È stato utile?

Soluzione

Come chiamare il codice C ++ da C #

.

o

Chiamando la funzione C ++ da C #

Utilizzo: [Dllimport ("xxx.dll")] xxx.dll è compilato da c ++

Spero che questo aiuto.

Altri suggerimenti

Ci sono un paio di modi per chiamare in codice nativo da C #.Il più semplice è probabilmente quello di usare P/Invoke. Dì che la tua funzione è come:

extern "C" int nGetSomeThing(void);
.

E viene compilato in un file yourdllname.dll, è possibile utilizzare P / invocati per chiamare direttamente nel codice non gestito nel seguente modo dal codice C #:

public static class interop
{
    [DllImport("YourDllName.dll")]
    static extern public int nGetSomeThing(void);
}
...
interop.nGetSomething() // call to the native function
.

Riferisci: http://msdn.microsoft.COM / IT-US / Biblioteca / AA288468% 28 VS.71% 29.aspx .

Se hai molte funzioni con firme complesse, dovresti probabilmente andare per uno strato interoperativo in C ++ / CLI. Riferisci: http://www.codeproject.com/articles/19354/quick-c-cli-Learn-c-CLISIURNESS-HAN-10-MINUS

Ho appena aggiunto __cplusplus check e ha funzionato!

#ifdef __cplusplus
.

extern "c" {

ENDIF

GETSomthing_API char* GetAgentId(const char* szConfigPath, char *szA, int ASize);
.

IFDEF __CPLUSPLUS

}

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