IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Mix entre C et C++, probleme au linkage


Sujet :

C++

  1. #1
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut Mix entre C et C++, probleme au linkage
    Bonjour,

    je suis actuellement entrain de construire une librairie en c qui est incluse dans plusieurs petit programme en C++.

    Tout compile parfaitement cependant je n'arrive pas a linker mon programme:

    Voici un extrait du make file (Generer avec CMake)

    Generation de cv7core.dll
    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
     
    Building C object src/cv7core/CMakeFiles/cv7core.dir/camparams.c.obj
    cd D:\projects\CvS400\ec_mingw\src\cv7core && C:\MinGW\bin\gcc.exe   -Dcv7core_EXPORTS -g -IC:\ARCHIV~1\OpenCV\cv\include -IC:\ARCHIV~1\OpenCV\cvaux\include -IC:\ARCHIV~1\OpenCV\cxcore\include -IC:\ARCHIV~1\OpenCV\OTHERL~1\highgui -ID:\projects\CvS400\trunk\include\cv7core   -o CMakeFiles\cv7core.dir\camparams.c.obj   -c D:\projects\CvS400\trunk\src\cv7core\camparams.c
    "C:\Archivos de programa\CMake 2.6\bin\cmake.exe" -E cmake_progress_report D:\projects\CvS400\ec_mingw\CMakeFiles 9
    ...
    Linking C shared library ..\..\bin\libcv7core.dll
    cd D:\projects\CvS400\ec_mingw\src\cv7core && "C:\Archivos de programa\CMake 2.6\bin\cmake.exe" -E cmake_link_script CMakeFiles\cv7core.dir\link.txt --verbose=1
    C:\MinGW\bin\gcc.exe    -shared -o ..\..\bin\libcv7core.dll -Wl,--out-implib,..\..\bin\libcv7core.dll.a -Wl,--major-image-version,1,--minor-image-version,0 CMakeFiles\cv7core.dir\camparams.c.obj CMakeFiles\cv7core.dir\cvtools.c.obj "C:\Archivos de programa\OpenCV\lib\cv.lib" "C:\Archivos de programa\OpenCV\lib\cvaux.lib" "C:\Archivos de programa\OpenCV\lib\cxcore.lib" "C:\Archivos de programa\OpenCV\lib\highgui.lib" "C:\Archivos de programa\OpenCV\lib\cv.lib" "C:\Archivos de programa\OpenCV\lib\cvaux.lib" "C:\Archivos de programa\OpenCV\lib\cxcore.lib" "C:\Archivos de programa\OpenCV\lib\highgui.lib" 
    Creating library file: ..\..\bin\libcv7core.dll.a
    mingw32-make[3]: Leaving directory `D:/projects/CvS400/ec_mingw'
    "C:\Archivos de programa\CMake 2.6\bin\cmake.exe" -E cmake_progress_report D:\projects\CvS400\ec_mingw\CMakeFiles  2 3 4 5 6 7 8 9 10
    [100%] Built target cv7core
    mingw32-make[2]: Leaving directory `D:/projects/CvS400/ec_mingw'
    "C:\Archivos de programa\CMake 2.6\bin\cmake.exe" -E cmake_progress_start D:\projects\CvS400\ec_mingw\CMakeFiles 0
    mingw32-make[1]: Leaving directory `D:/projects/CvS400/ec_mingw'
    La librarie est donc parfaitement generer.

    puis apres je compile mon main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [100%] Building CXX object src/CMakeFiles/BgS400.dir/main.cpp.obj
    cd D:\projects\CvS400\ec_mingw\src && C:\MinGW\bin\g++.exe    -g -IC:\ARCHIV~1\OpenCV\cv\include -IC:\ARCHIV~1\OpenCV\cvaux\include  -IC:\ARCHIV~1\OpenCV\cxcore\include -IC:\ARCHIV~1\OpenCV\OTHERL~1\highgui -ID:\projects\CvS400\trunk\include\cv7core -ID:\projects\CvS400\trunk\include\cv7io -ID:\projects\CvS400\trunk\include   -o CMakeFiles\BgS400.dir\main.cpp.obj -c D:\projects\CvS400\trunk\src\main.cpp
    Et finalement il y a la liaison qui ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Linking CXX executable ..\bin\BgS400.exe
    cd D:\projects\CvS400\ec_mingw\src && "C:\Archivos de programa\CMake 2.6\bin\cmake.exe" -E cmake_link_script CMakeFiles\BgS400.dir\link.txt --verbose=1
    C:\MinGW\bin\g++.exe   -g   CMakeFiles\BgS400.dir\main.cpp.obj  -o ..\bin\BgS400.exe -Wl,--out-implib,..\bin\libBgS400.dll.a -Wl,--major-image-version,0,--minor-image-version,0  "C:\Archivos de programa\OpenCV\lib\cv.lib" "C:\Archivos de programa\OpenCV\lib\cvaux.lib" "C:\Archivos de programa\OpenCV\lib\cxcore.lib" "C:\Archivos de programa\OpenCV\lib\highgui.lib" ..\bin\libcv7core.dll.a "C:\Archivos de programa\OpenCV\lib\cv.lib" "C:\Archivos de programa\OpenCV\lib\cvaux.lib" "C:\Archivos de programa\OpenCV\lib\cxcore.lib" "C:\Archivos de programa\OpenCV\lib\highgui.lib"
    CMakeFiles\BgS400.dir\main.cpp.obj: In function `main':
    D:/projects/CvS400/trunk/src/main.cpp:11: undefined reference to `CamParams_InitMem()'
    D:/projects/CvS400/trunk/src/main.cpp:53: undefined reference to `CamParams_ReadXML(CvFileStorage const*, CvFileNode const*, CamParams*)'
    D:/projects/CvS400/trunk/src/main.cpp:54: undefined reference to `CamParams_Print(CamParams*)'
    collect2: ld returned 1 exit status
    Voila, et la j'ai vraiment du mal a voir ou est mon erreur... c'est possible que cela soit tout bete mais j'ai l'impression que je n'oublie rien au moment du linking (il y a bien ..\bin\libcv7core.dll.a).

    Si qqun a une idée.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    As-tu pensé à ceci pour tes déclarations?
    http://www.developpez.net/forums/d25...utilise-c-cpp/
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    merci j'avais completement zappé le extern C sur ce fichier.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de linkage SDL avec Builder 6 pro
    Par Invité dans le forum SDL
    Réponses: 5
    Dernier message: 28/04/2006, 02h44
  2. QT+DEV-CPP+LIBPQ : probleme de linkage
    Par Pe04 dans le forum Dev-C++
    Réponses: 2
    Dernier message: 31/03/2006, 11h31
  3. [MFC]+[dll] probleme au linkage
    Par BainE dans le forum MFC
    Réponses: 3
    Dernier message: 22/06/2005, 12h04
  4. [MFC ]Probleme de linkage d'une dll
    Par Lysis dans le forum MFC
    Réponses: 9
    Dernier message: 22/01/2004, 14h51
  5. Probleme de linkage avec DirectDraw7 sous BC++ 5.02
    Par bobtorn dans le forum DirectX
    Réponses: 3
    Dernier message: 07/10/2003, 20h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo