J'ai utilisé la méthode qui est expliquée ici : http://www.developpez.net/forums/d [...] ost5755120 pour voir un peu comment ca marche.
j'ai utilisé juste les trois premières fonctions citées dedans, car ce qu'il me faut pour l'instant c'est utiliser des fonctions C dans un fichier C++.
j'ai compilé le fichier C d'abord, puis j'ai compilé le tout avec g++. Voici le resultat :
Code :
- gcc -c FonctionsC.c
- moi@moi-G73Jh:~/C_CPP$ g++ -Wall -o main main.cpp
- /tmp/ccnAp3YM.o: In function 'main':
- main.cpp:(.text+0xf): undefined reference to 'fonction1'
- main.cpp:(.text+0x41): undefined reference to 'fonction2'
- main.cpp:(.text+0x6e): undefined reference to 'fonction3'
- collect2: ld returned 1 exit status
|
Apparemment il n'a pas trouvé FonctionsC.o ...
Voici les codes :
main.cpp :
Code :
- #include "FonctionsC.h"
- #include <iostream>
- #include <string>
- using namespace std;
- int main(void)
- {
- cout << "1: " << fonction1(2) << endl;
- cout << "2: " << fonction2("coucou" ) << endl;
- cout << "3: " << fonction3() << endl;
- return 0;
- }
|
FonctionsC.h :
Code :
- /* Définition de la macro EXTERN_C pour C ou C++ */
- #ifndef EXTERN_C
- #ifdef __cplusplus
- #define EXTERN_C extern "C"
- #else
- #define EXTERN_C
- #endif
- #endif
- /* Ces fonctions sont accessibles en C++,
- car le linker saura que ce sont des fonctions C. */
- EXTERN_C int fonction1(int);
- EXTERN_C int fonction2(char const *);
- EXTERN_C void * fonction3(void);
|
FonctionsC.c
Code :
- #include <stdlib.h>
- #include <stdio.h>
- #include "FonctionsC.h"
- int fonction1(int a)
- {
- return 2*a;
- }
- int fonction2(char const *s)
- {
- return puts(s);
- }
- void * fonction3(void)
- {
- return NULL;
- }
|
Est ce que c'est comme ça qu'on compile ? Je ne sais pas d'où vient le problème.