【发布时间】:2016-04-21 14:03:27
【问题描述】:
我是cpp的新手,想要一个粒子过滤器的实现,我尝试在这里运行代码https://github.com/NewProggie/Particle-Filter,这是一个结构化且易于理解的项目。但是当我尝试编译和链接时:
g++ $(pkg-config --cflags --libs opencv) -I/usr/local/Cellar/opencv3/3.1.0_1/include -I /usr/local/Cellar/gsl/1.16/include -stdlib=libc++ main.cpp -o main
我有以下链接问题:
Undefined symbols for architecture x86_64:
"colorFeatures::colorFeatures()", referenced from:
_main in main-2b4c23.o
"colorFeatures::~colorFeatures()", referenced from:
_main in main-2b4c23.o
"adaboostDetect::detectObject(_IplImage*, CvRect**)", referenced from:
_main in main-2b4c23.o
"adaboostDetect::adaboostDetect()", referenced from:
_main in main-2b4c23.o
"tracker::addObjects(_IplImage*, CvRect*, int)", referenced from:
_main in main-2b4c23.o
"tracker::initTracker(_IplImage*, CvRect*, int, int)", referenced from:
_main in main-2b4c23.o
"tracker::showResults(_IplImage*)", referenced from:
_main in main-2b4c23.o
"tracker::next(_IplImage*)", referenced from:
_main in main-2b4c23.o
"tracker::tracker()", referenced from:
_main in main-2b4c23.o
"tracker::~tracker()", referenced from:
_main in main-2b4c23.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
有好心人对这个问题有想法吗?提前致谢
【问题讨论】:
-
使用
CMake生成makefile会更简单,因为项目提供了CMakeLists.txt。 -
尝试添加库搜索路径到opencv库g++ $(pkg-config --cflags --libs opencv) -I/usr/local/Cellar/opencv3/3.1.0_1/include -I/ usr/local/Cellar/gsl/1.16/include -L/usr/local/Cellar/opencv3/3.1.0_1/lib -stdlib=libc++ main.cpp -o main
-
@drescherjm:谢谢,但你能详细告诉我下一步该怎么做吗?我可以使用 cmake 生成 CMakeFiles 文件夹、main.app、cmake_install.cmake,但是这些东西怎么办?谢谢
-
生成 makefile 之后。你在构建文件夹中执行
make或cmake --build . -
@drescherjm,好的,非常感谢,然后使用 make 工作。但是您能否告诉我如何直接解决列出的问题(不是替代方式),欢迎任何链接或线索,感谢您的帮助和耐心