草庐IT

lboost_system-mt

全部标签

C++ operator() 重载 boost::system::error_code 技巧

我看到了boost实现的一个绝妙技巧,他们以某种方式使用()运算符的重载来将类boost::system::error_code的实例评估为bool值classerror_code{...typedefvoid(*unspecified_bool_type)();staticvoidunspecified_bool_true(){}operatorunspecified_bool_type()const//trueiferror{returnm_val==0?0:unspecified_bool_true;}...}这导致有可能检查这样的错误...boost::system::erro

c++ - fatal error LNK1104 : cannot open file 'libboost_regex-vc90-mt-gd-1_42.lib'

我正在尝试在我的程序中使用boost正则表达式问题是我得到这个错误......我所做的唯一安装步骤是添加:“C:\ProgramFiles\boost\boost_1_42”进入附加包含目录...我正在使用VS2008...尝试实现这个:#include#include#includeusingnamespacestd;intmain(){std::strings,sre;boost::regexre;boost::cmatchmatches;while(true){cout>sre;if(sre=="quit"){break;}cout>s;try{//Assignmentandco

c++ - 在不复制数据的情况下,决定 what() 从继承自 std::system_error 的类返回什么的符合标准的方法是什么?

我使用从std::system_error继承的类进行错误处理,我想控制调用what()时返回的内容。原因:标准(C++11和C++1yCD草案-N3690,下面的§引用是后者)没有指定what()返回的字符串应该是什么样子就像,它只是在§19.5.6.2(14)中给出注释:Note:ThereturnedNTBSmightbethecontentsofwhat_arg+":"+code.message().—endnote因此它应被视为依赖于实现。(顺便说一句,不应该是code().message()而不是code.message()吗?)所以,问题是:如果我想符合标准并且不依赖于实

c++ - 从与静态运行时(/MT 或/MTd)链接的 DLL 函数返回非原始 C++ 类型

假设我们有一个动态库(“HelloWorld.dll”),它是使用MicrosoftVisualStudio2010从以下源代码编译的:#includeextern"C"__declspec(dllexport)std::stringhello_world(){returnstd::string("Hello,World!");//orjust:return"Hello,World!";}我们还有一个可执行文件(“LoadLibraryExample.exe”),它使用LoadLibraryWINAPI函数动态加载此DLL:#include#include#includetypedef

java - 为同一个共享库调用 System.loadLibrary 两次

我遇到过两个jar库使用同一个共享库的情况。在每个库中,“主界面”类使用System.loadLibrary加载.so文件。我的问题是:如果用户决定在一个项目中使用这两个jar库,那么第二次为同一个.so文件调用System.loadLibrary是否会导致任何异常?还是系统“以某种方式处理”以防止共享库被加载两次?或者也许有一种“众所周知的模式”来处理这种情况?jni包装器的目标是在android上使用。我是这两个包装器库的作者,因此您可以完全控制Java源代码。 最佳答案 根据apidocs这应该不是问题:“如果使用相同的库名称

c++ - 获取 POSIX 纪元作为 system_clock::time_point

我知道std::chrono::system_clock::time_point的默认值是时钟的纪元,但我在C++11标准中找不到任何规定system_clock的纪元与POSIX纪元(1970-01-01T00:00:00Z)相同。在Linux和Windows上假设是这种情况是否安全?或者使用std::chrono::system_clock::from_time_t(0)会更聪明吗? 最佳答案 标准离开std::chrono::system_clock::time_point的纪元未指定。std::chrono::system_

c++ - 找不到 -lboost_system 的库

我使用macports安装了boost。这些文件似乎在/opt/local/include/boost/我的makefile不再工作,我收到以下错误Undefinedsymbols:"boost::system::generic_category()",referencedfrom:__static_initialization_and_destruction_0(int,int)inclient.o__static_initialization_and_destruction_0(int,int)inclient.o"boost::system::system_category()"

C++ CLI System.String^ 到 MFC LPCTSTR

如何将系统(.net)C++\CLIString^转换为MFCC++LPCTSTR字符串。将LPCTSTR转换为String^非常容易,但到目前为止还没有找到相反的方法。 最佳答案 如果您有VisualStudio2008或更高版本,您应该能够使用C++/CLI编码(marshal)处理库来执行此操作,如下所示:#includeusingnamespaceSystem;usingnamespacemsclr::interop;...String^cliString;marshal_contextcontext;LPCTSTRcstr

c++ -/MT 和/MD 构建崩溃,但仅当未附加调试器时才会崩溃 : how to debug?

这个问题在这里已经有了答案:Programonlycrashesasreleasebuild--howtodebug?(29个答案)关闭9年前。我有一个小型单线程C++应用程序,使用VisualStudio2005编译和链接,它使用boost(crc、program_options和tokenizer)、少量STL和其他各种系统头文件。(它的主要目的是读取.csv并生成自定义二进制.dat和配对的.h声明“解释”.dat格式的结构。)该工具在调试器之外运行时崩溃(NULL上的访问冲突),仅在发行版中。例如。按F5不会导致工具崩溃,Ctrl-F5会。当我重新连接调试器时,我得到了这个堆栈

c++ - 在 Mac OSX 上设置 System V 消息队列大小

我目前在MacOSX上使用SystemV消息队列,但无法将队列大小设置为大于2048字节的值。这是一个可编译的示例test.c:#include#include#includeintmain(){//getamessagequeueidintid=msgget(IPC_PRIVATE,IPC_CREAT|0600);if(-1==id)exit(1);//getmessagequeuedatastructurestructmsqid_dsbuf;if(-1==msgctl(id,IPC_STAT,&buf))exit(1);printf("sizeis%lubytes\n",buf.m