Je veux compiler avec ICL (Intel C++ Compiler) l'interface C de ma biblioth�que C++, afin que d'autres personnes puissent utiliser cette librairie avec d'autres compilateurs sous Windows (VC8, Cygwin GCC...)
Donc certains de mes fichiers d'en-t�te ont la structure suivante
Je compile le fichier .LIB avec ICL, mais je n'arrive pas � le lier avec l'interface C sous VC8 comme je le souhaiterais.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #ifdef __cplusplus // code C++: déclaration de classes, fonctions templates... ... #endif __cplusplus #ifdef __cplusplus extern "C" { #endif // Déclaration des fonctions C de l'interface ... #ifdef __cplusplus } #endif
Dans mon programme utisateur ,j'essaye
1)
Mais alors le compilo de VC8 r�pond que:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 extern "C" { #include "ma_lib.h" }
> ma_lib.h : error C2894: templates cannot be declared to have 'C' linkage
Donc le compilo va malheureusement v�rifier le code C++ dans le fichier d'en-t�te.
2)
Mais le linker de VC8 r�pond qu'il ne peut ouvrir des LIB C++ dont ma librairie est d�pendante, par example:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 #include "ma_lib.h"
> fatal error LNK1104: cannot open file 'libmmt.lib'
(libmmt est la librairie math�matique d'ICL)
Alors que je ne veux utiliser que les fonctions C de ma librairie, et �viter de donner toutes les autres librairies dont elle est d�pendante. Que faire?
Si vous avez des precisions sur les m�canismes de d�corations et des d�pendances des librairies qui me permettraient de comprendre le probl�me, je suis preneur.
Partager