gpt4 book ai didi

c++ - 无法在 Linux 上编译 C++ 代码,但可以在 Mac OS 上编译

转载 作者:IT王子 更新时间:2023-10-29 01:16:26 35 4
gpt4 key购买 nike

对于我正在从事的项目,我想尝试以下程序: http://sourceforge.net/projects/tirg/

它由两个 C++ 文件组成,但我无法在运行 Linux 的笔记本电脑上编译它,而在运行 Mac OS 的我 friend 的笔记本电脑上编译却没有任何问题。我没有任何编译 C++ 代码的经验,所以这可能是初学者的错误。

运行 Mac OS 的笔记本电脑成功地编译了代码,使用了以下 g++ 版本:

i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

我尝试在运行 Arch LInux(64 位)的笔记本电脑上使用 gcc、g++、clang 和 clang++ 编译 C++ 文件,版本如下:

gcc and g++ (GCC) 4.8.1 20130725 (prerelease)
clang version 3.3 (tags/RELEASE_33/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix

编译时出现的错误是:

/usr/include/c++/4.8.1/bits/stl_vector.h:1240:36: error: no matching function for call to ‘std::vector<std::vector<unsigned char> >::_M_fill_assign(int&, int&)’
{ _M_fill_assign(__n, __val); }
^

这是由这行代码引起的:

std::vector<std::vector<trg::Rgb> > a(300, 255);

我已将编译的完整输出放在 pastebin 上: http://pastebin.com/m285PSrH

我在编译 OpenCV 时也遇到了问题,所以可能是我的配置有问题。我认为这是一个版本控制问题,例如标准库的错误版本。

希望有更多 C++ 经验的人可以指出可能出了什么问题。谢谢!

最佳答案

std::vector<std::vector<trg::Rgb> > a(300, 255);

没有意义。你想写这样的东西:

//std::vector<std::vector<trg::Rgb> > a(picHeight, picWidth);
std::vector<std::vector<trg::Rgb> > a;
a.resize(picWidth);
{
std::vector<std::vector<trg::Rgb> >::iterator end = a.end();
std::vector<std::vector<trg::Rgb> >::iterator it = a.begin();
for(; it != end; ++it)
it->resize(picHeight);
}

您应该更正代码中的每个 assign() 以及对

的构造函数的每次调用
vector<vector<XX> >

关于c++ - 无法在 Linux 上编译 C++ 代码,但可以在 Mac OS 上编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18913501/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com