gpt4 book ai didi

ubuntu - cgi3.2.9 在 ubuntu 18.4 中安装失败

转载 作者:太空宇宙 更新时间:2023-11-03 17:05:54 25 4
gpt4 key购买 nike

当我安装 cgi 3.2.9 时,它列出了以下错误:

Making install in cgicc make[1]: Entering directory
'/root/learncpp/webprogramming/cgicc-3.2.9/cgicc' /bin/bash
../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I..
-I.. -x c++ -Wall -W -pedantic -g -O2 -MT libcgicc_la-Cgicc.lo -MD -MP -MF .deps/libcgicc_la-Cgicc.Tpo -c -o libcgicc_la-Cgicc.lo `test -f 'Cgicc.cpp' || echo './'`Cgicc.cpp libtool: compile: g++
-DHAVE_CONFIG_H -I. -I.. -I.. -x c++ -Wall -W -pedantic -g -O2 -MT libcgicc_la-Cgicc.lo -MD -MP -MF .deps/libcgicc_la-Cgicc.Tpo -c
Cgicc.cpp -fPIC -DPIC -o .libs/libcgicc_la-Cgicc.o Cgicc.cpp: In
member function ‘bool cgicc::Cgicc::findEntries(const string&, bool,
std::vector<cgicc::FormEntry>&) const’: Cgicc.cpp:328:54: error:
call of overloaded
‘copy_if(std::vector<cgicc::FormEntry>::const_iterator,
std::vector<cgicc::FormEntry>::const_iterator,
std::back_insert_iterator<std::vector<cgicc::FormEntry> >,
cgicc::FE_nameCompare)’ is ambiguous
std::back_inserter(result),FE_nameCompare(param));
^ Cgicc.cpp:99:3: note: candidate: Out cgicc::copy_if(In, In, Out,
Pred) [with In = __gnu_cxx::__normal_iterator<const
cgicc::FormEntry*, std::vector<cgicc::FormEntry> >; Out =
std::back_insert_iterator<std::vector<cgicc::FormEntry> >; Pred =
cgicc::FE_nameCompare] copy_if(In first, ^~~~~~~ In file
included from /usr/include/c++/7/algorithm:62:0,
from Cgicc.cpp:29: /usr/include/c++/7/bits/stl_algo.h:737:5: note: candidate: _OIter
std::copy_if(_IIter, _IIter, _OIter, _Predicate) [with _IIter =
__gnu_cxx::__normal_iterator<const cgicc::FormEntry*, std::vector<cgicc::FormEntry> >; _OIter =
std::back_insert_iterator<std::vector<cgicc::FormEntry> >;
_Predicate = cgicc::FE_nameCompare]
copy_if(_InputIterator __first, _InputIterator __last,
^~~~~~~ Cgicc.cpp:332:56: error: call of overloaded ‘copy_if(std::vector<cgicc::FormEntry>::const_iterator,
std::vector<cgicc::FormEntry>::const_iterator,
std::back_insert_iterator<std::vector<cgicc::FormEntry> >,
cgicc::FE_valueCompare)’ is ambiguous
std::back_inserter(result), FE_valueCompare(param));
^ Cgicc.cpp:99:3: note: candidate: Out cgicc::copy_if(In, In, Out,
Pred) [with In = __gnu_cxx::__normal_iterator<const
cgicc::FormEntry*, std::vector<cgicc::FormEntry> >; Out =
std::back_insert_iterator<std::vector<cgicc::FormEntry> >; Pred =
cgicc::FE_valueCompare] copy_if(In first, ^~~~~~~ In file
included from /usr/include/c++/7/algorithm:62:0,
from Cgicc.cpp:29: /usr/include/c++/7/bits/stl_algo.h:737:5: note: candidate: _OIter
std::copy_if(_IIter, _IIter, _OIter, _Predicate) [with _IIter =
__gnu_cxx::__normal_iterator<const cgicc::FormEntry*, std::vector<cgicc::FormEntry> >; _OIter =
std::back_insert_iterator<std::vector<cgicc::FormEntry> >;
_Predicate = cgicc::FE_valueCompare]
copy_if(_InputIterator __first, _InputIterator __last,
^~~~~~~ Makefile:417: recipe for target 'libcgicc_la-Cgicc.lo' failed make[1]: *** [libcgicc_la-Cgicc.lo] Error 1 make[1]: Leaving
directory '/root/learncpp/webprogramming/cgicc-3.2.9/cgicc'
Makefile:337: recipe for target 'install-recursive' failed make: ***
[install-recursive] Error 1

最佳答案

我在用 gcc 7.3.0 版 (Ubuntu 7.3.0-27ubuntu1~18.04) 编译 cgicc 3.2.9 时遇到了同样的错误

copy_if 模板是在 C++ 11 及更高版本中定义的,因此我使用以下代码来防止编译 Cgicc.cpp 中的代码,如果它已经像这样被支持的话:

#if __cplusplus <= 199711L
// ============================================================
// Function copy_if (handy, missing from STL)
// ============================================================
// This code taken directly from
// "The C++ Programming Language, Third Edition" by Bjarne Stroustrup
template<class In, class Out, class Pred>
Out
copy_if(In first,
In last,
Out res,
Pred p)
{
while(first != last) {
if(p(*first))
*res++ = *first;
++first;
}
return res;
}
#endif

现在一切正常

关于ubuntu - cgi3.2.9 在 ubuntu 18.4 中安装失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51980351/

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