2012-02-05 3 views
1

Je suis en train d'utiliser une bibliothèque C++ (Galib) dans mon projet C#, Visual Studio 2010.bibliothèque C de C# - Hériter classes

J'ai construit la bibliothèque pour obtenir le .lib et merci pour votre conseils utiles:

Using c++ library in c#

Je suis en mesure d'appeler les fonctions, mais je ne sont pas capables de créer des classes héritant de ceux présents dans la bibliothèque.

J'ai suivi ce guide

http://blogs.msdn.com/b/vcblog/archive/2008/12/08/inheriting-from-a-native-c-class-in-c.aspx

J'ai ajouté

__declspec(dllexport) class GAEvalData { 
public: 
. . . 
} 

mais en utilisant dumpbin/EXPORT ga.lib pour atteindre le point d'entrée, je n'ai pas d'info.

je signaler la sortie dumpbin:

Dump of file ga.lib 
File Type: LIBRARY 

Et rien d'autre.

inverser également

class __declspec(dllexport) GAEvalData { 
public: 
. . . 
} 

il semble pas de travail.

Des suggestions?

Est-ce la meilleure façon d'hériter des classes de bibliothèques externes?

Merci à l'avance,

Dave

+3

Pouvez-vous compiler la bibliothèque C++ dans C++/CLI? – CodesInChaos

+1

Vous pouvez également regarder SWIG ou CXXI. | [CXXI github] (https://github.com/mono/cxxi) | [CXXI introduction post] (http://tirania.org/blog/archive/2011/Dec-19.html) – CodesInChaos

+0

Vous devez ignorer ce qu'il y a dans ce post de blog. Le nombre de façons dont vous allez vous faire sauter est trop nombreux. Le mode de défaillance est très désagréable, le débogage d'un segment de mémoire corrompu n'est pas amusant. L'écriture d'un wrapper C++/CLI est de loin la plus simple. http://stackoverflow.com/a/2691448/17034 –

Répondre

1

Normalement, vous devez déclarer votre classe semblable à:

#ifdef DBTOOL_EXPORTS 
#define DBTOOL_API __declspec(dllexport) 
#else 
#define DBTOOL_API __declspec(dllimport) 
#endif 

class DBTOOL_API Class {} 

C++ dll devrait définir DBTOOL_EXPORTS. Je pense que l'idée est claire. J'espère que cela aidera

+0

Ce n'est pas pertinent pour le code C#, il n'inclut pas #include un fichier d'en-tête –

+0

Merci nogard pour la réponse, mais je pense que c'est la même chose que j'ai fait ..Je ne peux toujours pas voir l'objet Class dans mon code C#, ce que je m'attendais à faire est exactement celui posté par "Micah 23 Jan 2009 23:07" dans le lien http://blogs.msdn.com/b/vcblog/archive /2008/12/08/inheriting-from-a-native-c-class-in-c.aspx. Merci d'avance. – Dave

Questions connexes