cross compilation C++ et wrapper C++ - C++ - Programmation
Marsh Posté le 11-09-2009 à 08:31:50
ton repertoire de debug fait partie des chemins de recherches des .lib ?
Marsh Posté le 11-09-2009 à 08:53:17
BenO a écrit : ton repertoire de debug fait partie des chemins de recherches des .lib ? |
Ben, avec un autre projet fait sous VC++, il suffit que je copie la dll et la lib dans le répertoire de sortie et ca roule (j'avoue j'ai pas encore cherché dans visual studio où je devais indiquer le répertoire des dll et libs
Tu crois que ca vient juste de ca ? Car, avec un projet full VS (i.e. Tux.dll fait sous VS) ca marche. Avec Tux.dll fait sous mingw32-g++/Linux, ca marche plus
merci du coup de main
Marsh Posté le 11-09-2009 à 08:56:58
Il est juste en train de dire qu'il ne trouve pas le binaire correspondant à ton Tux.cpp : tux.lib
Bouton droit sur ton projet dans VS > Properties > Linker > Input > première ligne.
voila
Marsh Posté le 11-09-2009 à 09:14:59
BenO a écrit : Il est juste en train de dire qu'il ne trouve pas le binaire correspondant à ton Tux.cpp : tux.lib |
ok. J'ai mis ma lib à côté de mes sources et inclut la macro $(intputdir) dans les propriétés de linkage du projet. (bon on fera plus joli en production).
Mais il doit y a voir encore un chemin à la cxx qui cloche:
Code :
|
Les .obj ils sont générés dans le répertoire Debug, non ?
Encore une propriété à changer ?
merci de votre aide car la je déprime (importer une simple classe, et je galère ...)
Marsh Posté le 11-09-2009 à 09:20:10
ReplyMarsh Posté le 11-09-2009 à 10:04:35
BenO a écrit : je sais plus |
Mince
Sinon, le tux.h et ma méthode employée semblent-ils corrects ?
Une alternative ?
Bon, faut quand meme que je trouve ce que signifie cette erreur ... pourquoi il me cherche un .obj dans le inputdir...
Marsh Posté le 10-09-2009 à 15:00:25
Salut,
Je dispose de sources C++ que je devrai compiler sous Linux pour au final être utiliser sous windows (C#). Aille ! Aille ! Aille !
Je tente donc quelques essais mais en vain pour l'instant...
Mon fichier tux.h (je ne mets pas les cpp qui sont sans intérêt) sous Linux est :
Je compile avec mingw32 sous linux:
Je passe sous Windows...
Je crée la lib :
Je crée mon projet VSC++ (CLR pour pouvoir plus tard appeler ma classe depuis C#).
J'inclus mon tux.h, je mets tux.dll et tux.lib dans le répertoire de debug.
J'écris mon wrapper WrappingUx.h:
Ca compile mais au linkage ... crash :
Error 1 error LNK2028: unresolved token (0A00000D) "public: char const * __stdcall Tux::getName(void)" (?getName@Tux@@$$FQAGPBDXZ) referenced in function "public: class System::String ^ __clrcall TuxWrapper::getName(void)" (?getName@TuxWrapper@@$$FQ$AAMP$AAVString@System@@XZ) WrappingUx.obj WrappingUx
Error 2 error LNK2019: unresolved external symbol "public: char const * __stdcall Tux::getName(void)" (?getName@Tux@@$$FQAGPBDXZ) referenced in function "public: class System::String ^ __clrcall TuxWrapper::getName(void)" (?getName@TuxWrapper@@$$FQ$AAMP$AAVString@System@@XZ) WrappingUx.obj WrappingUx
Error 3 fatal error LNK1120: 2 unresolved externals C:\Work\Leny\CPP\Tests\CrossCompilation\C#\TestDllImport\Debug\WrappingUx.dll WrappingUx
Et là, je sèche carrément.
J'ai essayé de jouer avec les extern, __stdcall, dllexport, .... rien à faire
Quelqu'un aurait-il une idée du problème ?
Une alternative ?
Une info qui pourrait m'être utile?
Merci d'avance pour votre aide.