C++ g++;ld:找不到架构x86_64的符号
我在试着编辑山姆·黑尔的 我使用的是mac OSX10.9、opencv 2.4.6和Eigen 2.0.17 Eigen和opencv头存储在/opt/local/include中,而opencv dylib存储在/opt/local/lib中 我修改了兔子的Makefile来处理这个文件夹。在终端上键入make时:C++ g++;ld:找不到架构x86_64的符号,c++,opencv,gcc,C++,Opencv,Gcc,我在试着编辑山姆·黑尔的 我使用的是mac OSX10.9、opencv 2.4.6和Eigen 2.0.17 Eigen和opencv头存储在/opt/local/include中,而opencv dylib存储在/opt/local/lib中 我修改了兔子的Makefile来处理这个文件夹。在终端上键入make时: g++ -L/opt/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc src/Config.o src/Fea
g++ -L/opt/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc src/Config.o src/Features.o src/HaarFeature.o src/HaarFeatures.o src/HistogramFeatures.o src/ImageRep.o src/LaRank.o src/MultiFeatures.o src/RawFeatures.o src/Sampler.o src/Tracker.o src/main.o src/GraphUtils/GraphUtils.o -o struck
我发现以下错误:
Undefined symbols for architecture x86_64:
"cv::namedWindow(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
int)", referenced from:
_main in main.o "cv::split(cv::Mat const&, std::__1::vector<cv::Mat, std::__1::allocator<cv::Mat> >&)",
referenced from:
ImageRep::ImageRep(cv::Mat const&, bool, bool, bool) in ImageRep.o "cv::imread(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
int)", referenced from:
_main in main.o "cv::imshow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&,
cv::_InputArray const&)", referenced from:
LaRank::Debug() in LaRank.o
Tracker::Debug() in Tracker.o
_main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see
invocation)
架构x86_64的未定义符号:
“cv::namedWindow(标准::_1::基本字符串常量&”,
int)”,引用自:
_main.o中的main“cv::split(cv::Mat const&,std::_1::vector&)”,
引用自:
ImageRep::ImageRep(cv::Mat const&,bool,bool,bool)在ImageRep.o“cv::imread(std::u 1::basic_string const&,
int)”,引用自:
_main.o“cv::imshow(std::u 1::basic_string const&,
cv::_inputarrayconst&“,引用自:
LaRank.o中的LaRank::Debug()
Tracker.o中的Tracker::Debug()
_main in main.o ld:未找到架构x86_64的符号clang:错误:链接器命令失败,退出代码为1(使用-v查看
调用)
有什么想法吗?谢谢 终于解决了我的问题
< >我在XCODER中创建了一个新的项目,其中包含了源代码,并将C++标准库从默认的LBC+++改为LIbSTDc++,如In和.P/>
,在我试图从两个不同的对象文件(main .o和Addio.O)中执行一个类似的警告/错误/失败时,我也遇到了类似的警告/错误/失败。我正在使用命令:
gcc-o exec main.o add.o
< >但是我的程序是C++程序。使用g++
编译器解决了我的问题:
g++-o exec main.o add.o
我一直认为,
gcc
可以自己解决这些问题。显然不是。我希望这有助于其他人搜索此错误。我在.h文件中编写了我的去极化
class String
{
String (const char * cstr = 0);
};
我在另一个.cpp文件中使用了inline(实现)
然后我使用g++得到以下结果:
架构x86_64的未定义符号:
“字符串::字符串(字符常量*)”,引用自:
_测试中的主管道-d389f3.o
ld:找不到架构x86_64的符号
解决方案:当去极化和实现是独立的时,不要写内联的。32位和64位库之间存在冲突。好的,实际上我不知道如何解决。有什么提示吗?您需要检查链接在一起的所有库,无论它们是32位还是64位。如果你不知道从哪里得到它们,我不知道怎么做。在我的例子中,在框架中添加'libc++.dylib'解决了这个问题。希望这对某些人有所帮助我也是这样假设的:“我一直认为gcc可以自己解决这些问题。”
inline String::String(const char * cstr)
{
//code ...
}