Qt5.1/Qt5.2 + Mac OS 10.9 (Mavericks) + XCode 5.0.2, les symboles non définis pour l'architecture x86_64
Environnement : Mac OS 10.9 + Qt5.1/Qt5.2 + OpenCV2.4.7 + XCode(5.0.2)
Je peux compiler le programme suivant via un terminal
g++ -L/usr/local/lib -lopencv_core -lopencv_highgui \
-I/usr/local/include main.cpp
Le programme.out s'exécute normalement.
Cependant, lors de l'utilisation de Qt 5.1/5.2 pour exécuter cette OpenCV programme,
J'ai eu "les symboles non définis pour l'architecture x86_64".
Cependant, Qt5 fonctionne normalement pour un simple HelloWorld programme en c++.
Ce qui se passe ?
Voici le code.
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
using namespace std ;
using namespace cv ;
int main()
{
Mat img ;
img = imread("image.jpg") ;
return 0;
}
Et c'est le projet de création d'
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib
LIBS += -lopencv_core -lopencv_highgui -v
cache()
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
Ici est le message de la compilation
/Users/XXX/Qt5.2.0/5.2.0-beta1/clang_64/bin/qmake -spec macx-clang CONFIG+=debug -o Makefile /Users/XXX/Desktop/untitled/untitled.pro
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -headerpad_max_install_names -Wl,-syslibroot
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -mmacosx-version-min=10.6 -o untitled main.o -L/usr/local/lib -lopencv_core -lopencv_highgui -v
avec l'option-v pour afficher l'invocation
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -headerpad_max_install_names -macosx_version_min 10.6.0 -o untitled -lcrt1.10.6.o -L/usr/local/lib -syslibroot
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk main.o -lopencv_core -lopencv_highgui -lstdc++ -lSystem
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.0/lib/darwin/libclang_rt.osx.a
Et voici le message d'erreur
Undefined symbols for architecture x86_64:
"cv::imread(std::string const&, int)", referenced from:
_main in main.o
.... and so on
J'ai vérifié le problème n'a rien à voir avec -lstdc++
ou -std=c++11
ou -stdlib=libstdc++
.
en utilisant la ligne de commande de compilation.
Toute idée ou suggestion?
Merci pour le commentaire. Je pense aussi que le problème est l'éditeur de liens. J'ai essayé d'exécuter un démarrage simple:le système de fichiers du programme. Il me donne la même erreur.
le problème pourrait être que vous avez besoin d'un autre composant à être lié, comme
-lopencv_core -lopencv_highgui -lopencv_somethingforimages
Depuis que je peux compiler dans le terminal avec "g++ -L/usr/local/lib -lopencv_core -lopencv_highgui -I/usr/local/include main.cpp" je pense que ce problème n'est pas causé par le manque, l'. De toute façon, pense pour votre aide, mais je pense que je devrais retourner à Mac OS X10.8, puisque j'ai travaillé sur ce pendant 5 jours.
bien vous pourriez vous retrouver avec les différentes version de la lib si vous l'avez installé plus d'une fois... vous pouvez trouver la version que vous utilisez et essayer de lire les symboles avec
nm
pour voir si c'est dans la bibliothèque.
OriginalL'auteur maythe4thbewithu | 2013-12-03
Vous devez vous connecter pour publier un commentaire.
Cette question est répondu dans ce post
http://qt-project.org/forums/viewthread/35646/
et expliqué par une plage de sable.martel
J'ai cité ici
- Je résoudre ce problème en modifiant ../Qt5.2.0/5.2.0-rc1/clang_64/mkspecs/macx-clang/qmake.conf
de
à
Et n'oubliez pas propre votre projet avant de reconstruire.
Spot sur. Merci
J'ai changé QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9, mais encore il ne fonctionne pas, pourquoi
OriginalL'auteur maythe4thbewithu
Dans le cas où vous êtes venu ici, parce que vous avez changé
config+=11
et rien ne s'est vraiment passé, essayez de nettoyer votre projet avant de reconstruire.OriginalL'auteur user1767754
Le problème n'est pas avec le système. Sur Mac il suffit d'inclure imgcodecs en-tête et l'lib fichiers aussi. Cela permettra de résoudre tous les problèmes que vous avez eus.
-lopencv_imgcodecs
OriginalL'auteur Anubhav Rohatgi