Question

Je ne suis pas si bon en C ++ mais, ..Par exemple j'ai ceci

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

Et la méthode que je veux importer comme ça

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

Comment puis-je appeler cela depuis C# ?

À côté, je pense que mon problème est avec le type de paramètre (const char *) du côté C ++, quel est le type égal en C # pour cela!const char*

Merci,

Était-ce utile?

La solution

Comment appeler C ++ code de C #

ou

Calling C ++ fonction de C #

Utilisation: [dllimport ("xxx.dll")] xxx.dll est compilé par C ++

J'espère que cette aide.

Autres conseils

Il existe plusieurs façons d’appeler du code natif à partir de C#.Le plus simple est probablement d'utiliser P/Invoke.Disons que votre fonction ressemble à :

extern "C" int nGetSomeThing(void);

et il est compilé dans un fichier YourDllName.dll, vous pouvez utiliser P/Invoke pour appeler directement le code non managé de la manière suivante à partir du code C# :

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

Référer : http://msdn.microsoft.com/en-us/library/aa288468%28VS.71%29.aspx.

Si vous disposez de nombreuses fonctions avec des signatures complexes, vous devriez probablement opter pour une couche d'interopérabilité en C++/CLI.Référer : http://www.codeproject.com/Articles/19354/Quick-C-CLI-Learn-C-CLI-in-less-than-10-minutes

Je viens d'ajouter __cplusplus check et cela fonctionnait!

#ifdef __cplusplus

extern "c" {

endif

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

IFDEF __CPLUSPLUS

}

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