Pregunta

No soy tan bueno en C ++ pero,.. Por ejemplo, tengo esto

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

y el método que quiero importar así

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

¿Cómo puedo llamar a esto desde C #?

al lado, Creo que mi problema es con el tipo de parámetro (Const Char *) en el lado de C ++, ¿cuál es el tipo igual en C # para él?const char *

gracias,

¿Fue útil?

Solución

Cómo llamar al código C ++ de C #

o

Llamar a la función C ++ de C #

Uso: [Dllimport ("xxx.dll")] xxx.dll es compilar por C ++

Espero esta ayuda.

Otros consejos

Hay un par de maneras para llamar al código nativo de C #.El más fácil es probablemente usar P/Invoke. Diga que su función es como:

extern "C" int nGetSomeThing(void);

y se compila en un archivo itandlname.dll, puede usar P / Invoke para llamar directamente al código no administrado de la siguiente manera desde el código C #:

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

Consulte: http://msdn.microsoft.COM / EN-EE. UU. / Library / AA288468% 28vs.71% 29.aspx .

Si tiene muchas funciones con firmas complejas, probablemente debería ir para una capa de interiores en C ++ / CLI. Consulte: http://www.codeproject.com/articles/19354/quick-c-cli-lelearn-c-cli-in-less-than-10-minutes

¡Acabo de agregar __cplusplus cheque y funcionó!

#ifdef __cplusplus

externo "c" {

endif

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

ifdef __cplusplus

}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top