- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的环境:solaris 5.10 gcc 4.8.2 boost 1.54
代码:
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
int main() {
BOOST_LOG_TRIVIAL(fatal) << "init " << filename << std::endl;
return 0;
}
编译选项和问题:
-bash-3.2$ g++ x.cc -lboost_log -lsocket -lnsl -o x
Undefined first referenced
symbol in file
boost::log::v2s_st::aux::stream_provider<char>::allocate_compound(boost::log::v2s_st::record&) /var/tmp//ccPKqK2f.o
boost::log::v2s_st::aux::unhandled_exception_count() /var/tmp//ccPKqK2f.o
boost::log::v2s_st::record_view::public_data::destroy(boost::log::v2s_st::record_view::public_data const*) /var/tmp//ccPKqK2f.o
boost::log::v2s_st::core::open_record(boost::log::v2s_st::attribute_set const&) /var/tmp//ccPKqK2f.o
boost::log::v2s_st::trivial::logger::get() /var/tmp//ccPKqK2f.o
boost::log::v2s_st::core::get_logging_enabled() const /var/tmp//ccPKqK2f.o
boost::log::v2s_st::core::push_record_move(boost::log::v2s_st::record&) /var/tmp//ccPKqK2f.o
boost::log::v2s_st::aux::stream_provider<char>::release_compound(boost::log::v2s_st::aux::stream_provider<char>::stream_compound*) /var/tmp//ccPKqK2f.o
boost::log::v2s_st::sources::aux::get_severity_level() /var/tmp//ccPKqK2f.o
ld: fatal: symbol referencing errors. No output written to x
collect2: error: ld returned 1 exit status
但是
-bash-3.2$ nm -A /usr/local/lib/libboost_log.so | grep unhandled_exception_count
/usr/local/lib/libboost_log.so: [2277] | 735336| 24|FUNC |GLOB |0 |10 |_ZN5boost3log11v2_mt_posix3aux25unhandled_exception_countEv
我们可以看到有boost::log::v2s_**mt**::aux::unhandled_exception_count,但是没有boost::log::v2s_st::aux::unhandled_exception_count
。
我的问题是编译器如何选择在这种情况下使用哪一个?
我已阅读 http://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/log/installation/config.html .但仍然不知道“无线程支持” 是什么意思。尝试使用 -lpthread 进行编译,但得到了同样的错误。
-bash-3.2$ g++ x.cc -lsocket -lnsl -o x -pthread -lboost_log
Undefined first referenced
symbol in file
boost::log::v2s_mt_posix::core::open_record(boost::log::v2s_mt_posix::attribute_set const&) /var/tmp//ccZHBWis.o
icu::Collator::createInstance(icu::Locale const&, UErrorCode&) /usr/local/lib/gcc/sparc64-sun-solaris2.10/4.8.2/../../../libboost_regex.so.1.57.0
boost::log::v2s_mt_posix::aux::stream_provider<char>::allocate_compound(boost::log::v2s_mt_posix::record&) /var/tmp//ccZHBWis.o
boost::log::v2s_mt_posix::core::get_logging_enabled() const /var/tmp//ccZHBWis.o
boost::log::v2s_mt_posix::aux::unhandled_exception_count() /var/tmp//ccZHBWis.o
icu::Locale::Locale(icu::Locale const&) /usr/local/lib/gcc/sparc64-sun-solaris2.10/4.8.2/../../../libboost_regex.so.1.57.0
boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*) /var/tmp//ccZHBWis.o
boost::log::v2s_mt_posix::core::push_record_move(boost::log::v2s_mt_posix::record&) /var/tmp//ccZHBWis.o
icu::Locale::Locale() /usr/local/lib/gcc/sparc64-sun-solaris2.10/4.8.2/../../../libboost_regex.so.1.57.0
icu::Locale::~Locale() /usr/local/lib/gcc/sparc64-sun-solaris2.10/4.8.2/../../../libboost_regex.so.1.57.0
boost::log::v2s_mt_posix::aux::stream_provider<char>::release_compound(boost::log::v2s_mt_posix::aux::stream_provider<char>::stream_compound*) /var/tmp//ccZHBWis.o
boost::log::v2s_mt_posix::sources::aux::get_severity_level() /var/tmp//ccZHBWis.o
boost::log::v2s_mt_posix::trivial::logger::get() /var/tmp//ccZHBWis.o
ld: fatal: symbol referencing errors. No output written to x
collect2: error: ld returned 1 exit status
有了 pthread 标志,它开始使用“mt”,但它要求 v2s_mt_posix。但是我们的图书馆提供了v2s_mt_posix3
-bash-3.2$ g++ x.cc -lsocket -lnsl -o x -pthread /usr/local/lib/libboost_log.a /usr/local/lib/libboost_log_setup.a /usr/local/lib/libboost_thread.a /usr/local/lib/libboost_system.a -lrt
-bash-3.2$ ./x
[2014-12-17 02:15:55.082758] [0x10000000] [fatal] init
-bash-3.2$ g++ x.cc -lsocket -lnsl -o x -pthread -lboost_log -lboost_log_setup -lboost_thread -lboost_system -lrt
Undefined first referenced
symbol in file
boost::log::v2s_mt_posix::core::open_record(boost::log::v2s_mt_posix::attribute_set const&) /var/tmp//ccegh2wS.o
icu::Collator::createInstance(icu::Locale const&, UErrorCode&) /usr/local/lib/gcc/sparc64-sun-solaris2.10/4.8.2/../../../libboost_regex.so.1.57.0
boost::log::v2s_mt_posix::aux::stream_provider<char>::allocate_compound(boost::log::v2s_mt_posix::record&) /var/tmp//ccegh2wS.o
boost::log::v2s_mt_posix::core::get_logging_enabled() const /var/tmp//ccegh2wS.o
boost::log::v2s_mt_posix::aux::unhandled_exception_count() /var/tmp//ccegh2wS.o
icu::Locale::Locale(icu::Locale const&) /usr/local/lib/gcc/sparc64-sun-solaris2.10/4.8.2/../../../libboost_regex.so.1.57.0
boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*) /var/tmp//ccegh2wS.o
boost::log::v2s_mt_posix::core::push_record_move(boost::log::v2s_mt_posix::record&) /var/tmp//ccegh2wS.o
icu::Locale::Locale() /usr/local/lib/gcc/sparc64-sun-solaris2.10/4.8.2/../../../libboost_regex.so.1.57.0
icu::Locale::~Locale() /usr/local/lib/gcc/sparc64-sun-solaris2.10/4.8.2/../../../libboost_regex.so.1.57.0
boost::log::v2s_mt_posix::aux::stream_provider<char>::release_compound(boost::log::v2s_mt_posix::aux::stream_provider<char>::stream_compound*) /var/tmp//ccegh2wS.o
boost::log::v2s_mt_posix::sources::aux::get_severity_level() /var/tmp//ccegh2wS.o
boost::log::v2s_mt_posix::trivial::logger::get() /var/tmp//ccegh2wS.o
ld: fatal: symbol referencing errors. No output written to x
collect2: error: ld returned 1 exit status
最佳答案
你是对的,编译器确实根据 -pthread
标志选择 mt 或 st。就动态链接而言,构建 boost 时,您可能已经做了类似的事情:
./bootstrap.sh --with-libraries=log,program_options,regex,filesystem,system,thread --prefix=/opt/csw/
./b2 link=static define="_XOPEN_SOURCE=600"安装
link=static
仅构建静态库。
对我来说,这似乎会影响您的图书馆是否有 v2s 或 v2。看: http://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/log/rationale/namespace_mangling.html
关于c++ - 由解决方法 : c++ : boost_log : how does compiler choose st or mt 修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27504043/
在boost中,有两种类型的lib,一种是以mt-gd结尾,另一种是以mt-s结尾。这两者有什么区别? 最佳答案 阅读Boost Getting Started on Windows mt:多线程 d
我在 vs2012 的“release”下编译了 Quantlib 库,得到了 lib 文件,QuantLib-vc110-mt.lib。 我的问题是这个文件名中的“mt”是什么意思?我的猜测是它与“
我在 VS 中出现链接错误。它找不到 libboost_filesystem-vc140-mt-1_61.lib。但是我有 boost_filesystem-vc140-mt-1_61.lib。为什么
所以我找到了以下代码。 mt 和 mt-xs 代表什么?谷歌搜索没有找到相关信息,有没有文档可以告诉我? 最佳答案 这是一个间距值。
所以我找到了以下代码。 mt 和 mt-xs 代表什么?谷歌搜索没有找到相关信息,有没有文档可以告诉我? 最佳答案 这是一个间距值。
我想在我的网站上对齐一些元素,我已经在我的 HTML 中使用了 mt-5,但我需要更多的边距。我该怎么做? 最佳答案 Bootstrap 没有更高的值(value),但您可以创建自己的类。文档说 "Y
我需要找到一种方法以不同的顺序将解析树转移到另一个解析树。 它适用于具有 SVO 和 SOV 架构的两种语言的机器翻译项目。 t1 = s(np(n(he)), vp( v(went), np(n(h
我有一个 MT.Dialog,我在其中添加了一些日志信息。 行可以有不同的高度。 我如何确保我的 MT.Dialog 始终滚动到底部,以便始终可见整个最后一行? 但是 .... 如果用户向上滚动列表,
我有以下递归关系: T(n) = T(n/2) + T(n/2) + n 在这种情况下,我认为解决方案是通过以下方式找到的: T(n) = T(n/2) + T(n/2) + n = 2T(n/2
我将编写我的程序,无论其版本如何,它都使用 boost_python。由于程序是多线程的,所以我必须使用 libboost_python-mt。问题是,当我安装 libboost_python-dev
我正在尝试将我的可执行文件部署到另一台机器,因此我需要非调试运行时。 切换到非调试运行时/MT 会导致链接错误。/Mtd 编译正常。以下是许多错误的示例。 1>libcpmtd.lib(_tolowe
我正在试图理解编译C/C++项目时如何使用MT和MD选项。然而,由于无法将这些假定的缩略语扩展为有意义的短语,我忘记了从一段到下一段哪个是哪个。奇怪的是,我读过的文章都不是从定义M、T和D开始的,它们
我试图计算一个大矩阵中所有元素的总和。以下是测试用例: MT 和 AVX 耗时 37 秒 MT 且无 AVX 需要 40 秒 AVX 且无 MT 需要 49 秒 既不是 AVX 也不是 MT 105
MT 支持 SMTP SendMail,还是我坚持使用 MFMailComposeViewController?现在,我可以使用它(MFMailComposeViewController),但是当我添
为了读取和解析MT942、MT940文件,推荐使用哪个库。 我遇到了两种选择, 使用由 PROWIDE 提供的开源库 使用 SWIFT 标准库 - SWIFT 有没有其他方法可以读取和解析 SWFIT
此命令有效: robocopy \\build7\d$ d: *.* /mir /XD "System Volume Information" /XD "$Recycle.Bin" 但是当我尝试
您使用哪个Apple iOS SDK版本来构建MonoTouch 4.0.3应用程序? 最佳答案 从技术上讲,它们应从3.0开始运行,但是如果使用3.0 IOS SDK,则可能会遇到一些限制。 当前与
任何人都可以帮忙,我想更改我的图像(按钮),当我按下我的按钮图像时,我打开 MT.Dialog 然后我登录,当我登录时我想让按钮改变我该怎么做,我有找到了代码,但它在 MT.Dialog 中不起作用这
我使用以下命令编译并运行了 bjam 甚至 b2.exe: bjam --with-system --with-thread ..etc 我的库文件是: libboost_system-vc110-m
我们的项目结构如下。 1) MainApp,它使用boost动态加载dll,所有dll项目/模块都是用/MD构建的。 2) 这些 dll 所需的任何其他项目都构建为静态 (.lib) 或动态 (.dl
我是一名优秀的程序员,十分优秀!