Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ boost示例未能生成_C++_Macos_Boost_Build Process_Boost Regex - Fatal编程技术网

C++ boost示例未能生成

C++ boost示例未能生成,c++,macos,boost,build-process,boost-regex,C++,Macos,Boost,Build Process,Boost Regex,我对boost是个新手。我成功地编译了boost库(在macosx下)。现在,我尝试构建boost网站上提到的第一个示例(包括boost/asinclude目录和boost/stage/libaslibrary目录,使用netbeans),并得到以下错误 "/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf "/usr/bin/make" -f nbproject/Makefile-Debu

我对boost是个新手。我成功地编译了boost库(在macosx下)。现在,我尝试构建boost网站上提到的第一个示例(包括boost/asinclude目录和boost/stage/libaslibrary目录,使用netbeans),并得到以下错误

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-MacOSX/boost_ex1
mkdir -p build/Debug/GNU-MacOSX
rm -f build/Debug/GNU-MacOSX/main.o.d
g++    -c -g -I../../boost_1_44_0 -MMD -MP -MF build/Debug/GNU-MacOSX/main.o.d -o build/Debug/GNU-MacOSX/main.o main.cpp
mkdir -p dist/Debug/GNU-MacOSX
g++     -o dist/Debug/GNU-MacOSX/boost_ex1 build/Debug/GNU-MacOSX/main.o -L../../boost_1_44_0/stage/lib 
Undefined symbols:
  "boost::re_detail::get_mem_block()", referenced from:
      boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::extend_stack()in main.o
  "boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >::maybe_assign(boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&)", referenced from:
      boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match_match()in main.o
  "boost::re_detail::get_default_error_string(boost::regex_constants::error_type)", referenced from:
      boost::re_detail::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) constin main.o
      boost::re_detail::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) constin main.o
  "boost::re_detail::put_mem_block(void*)", referenced from:
      boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::unwind_extra_block(bool)in main.o
  "boost::re_detail::raise_runtime_error(std::runtime_error const&)", referenced from:
      void boost::re_detail::raise_error<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > >(boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::error_type)in main.o
  "boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match()", referenced from:
      bool boost::regex_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)in main.o
  "boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)", referenced from:
      boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >)in main.o
  "boost::re_detail::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const", referenced from:
      boost::cpp_regex_traits<char>::transform_primary(char const*, char const*) constin main.o
  "boost::re_detail::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const", referenced from:
      boost::cpp_regex_traits<char>::transform(char const*, char const*) constin main.o
  "boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)", referenced from:
      boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-MacOSX/boost_ex1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 2s)
“/usr/bin/make”-f nbproject/Makefile-Debug.mk QMAKE=子项目=.build conf
“/usr/bin/make”-f nbproject/Makefile-Debug.mk dist/Debug/GNU MacOSX/boost_ex1
mkdir-p build/Debug/gnumacosx
rm-f build/Debug/gnumacosx/main.o.d
g++-c-g-I..//boost_1_44_0-MMD-MP-MF build/Debug/GNU MacOSX/main.o.d-o build/Debug/GNU MacOSX/main.o main.cpp
mkdir-p dist/Debug/gnumacosx
g++-o dist/Debug/GNU MacOSX/boost_ex1 build/Debug/GNU MacOSX/main.o-L..//boost_1_44_0/stage/lib
未定义的符号:
“boost::re_detail::get_mem_block()”,引用自:
boost::re_detail::perl_matcher::在main.o中扩展_stack()
“boost::match_results::maybe_assign(boost::match_results const&)”,引用自:
main.o中的boost::re_detail::perl_matcher::match_match()
“boost::re_detail::get_default_error_string(boost::regex_constants::error_type)”,引用自:
boost::re_detail::cpp_regex_traits_实现::error_字符串(boost::regex_常量::error_类型)contin main.o
boost::re_detail::cpp_regex_traits_实现::error_字符串(boost::regex_常量::error_类型)contin main.o
“boost::re_detail::put_mem_block(void*)”,引用自:
boost::re_detail::perl_matcher::在main.o中展开额外的块(bool)
“boost::re_detail::raise_runtime_error(std::runtime_error const&)”,引用自:
main.o中的void boost::re_detail::raise_error(boost::regex_traits_包装常量&,boost::regex_常量::error_type)
“boost::re_detail::perl_matcher::match()”,引用自:
bool boost::regex_match(_gnu cxx::_normal_迭代器,_gnu_cxx::_normal_迭代器,boost::match_results&,boost::basic_regex const&,boost::regex_常量::_match_标志)在main.o中
“boost::re_detail::perl_matcher::construct_init(boost::basic_regex const&,boost::regex_constants::_match_flags)”,引用自:
boost::re_detail::perl_matcher::perl_matcher(uu gnu cxx::u normal_迭代器,u gnu cxx:::u normal_迭代器,boost::match_结果&,boost::basic_regex const&,boost::regex_常量::match_标志,u gnu cxx:u normal迭代器)
“boost::re_detail::cpp_regex_traits_实现::transform_primary(char const*,char const*)const”,引用自:
boost::cpp_regex_traits::transform_primary(char const*,char const*)constin main.o
“boost::re_detail::cpp_regex_traits_implementation::transform(char const*,char const*)const”,引用自:
boost::cpp_regex_traits::transform(char const*,char const*)constin main.o
“boost::basic_regex::do_assign(char const*,char const*,unsigned int)”,引用自:
boost::basic_regex::在main.o中分配(char const*,char const*,unsigned int)
ld:找不到符号
collect2:ld返回了1个退出状态
make[2]:***[dist/Debug/GNU MacOSX/boost_ex1]错误1
生成[1]:***[.build conf]错误2
make:**[.build impl]错误2
生成失败(退出值2,总时间:2s)
我错过什么了吗

谢谢

大多数Boost库仅限于页眉: 它们完全由头文件组成 包含模板和内联 功能,并且不需要 单独编译的库二进制文件 或链接时的特殊处理

但是,如果您正在使用该库的代码,则必须链接该库。有关此操作的更多详细信息,请参阅

所以在您的例子中,问题是您没有链接到名为
libboost\u regex.So
的库。为此,请修改项目设置(或生成文件),以便它使用
-lboost\u regex
选项调用gcc。这个选项应该紧跟在您已有的
-L.././boost\u 1\u 44\u 0/stage/lib
选项之后,如下所示

g++ -o dist/Debug/GNU-MacOSX/boost_ex1 build/Debug/GNU-MacOSX/main.o -L../../boost_1_44_0/stage/lib -lboost_regex

祝你好运

是的,谢谢!我使用的是neatbeans,我认为添加libraries目录会自动生成-lboost_regex选项。@Banana:不客气。Boost具有AutoLink选项,但仅适用于Windows上的VisualStudioC++编译器。否则,您必须手动执行,因为NetBeans、编译器或链接器都不知道您需要链接什么。