草庐IT

libboost_filesystem-vc

全部标签

c++ - 是时候告别 VC6 编译器了吗?

最近我遇到了指向VC6编译器的问题。其中很少有:函数尝试block不起作用。RelatedQ类内常量不起作用。__FUNCTION_(获取函数名称的宏)不起作用最新添加的是它不允许将void函数作为for_each的一部分传递。下面的例子不是用VC6编译器编译的。它说“错误C2562:'()':'void'函数返回值”。看起来VC6不喜欢将void函数传递给for_each。classTemp{public:Temp(inti):m_ii(i){}intgetI()const{returnm_ii;}voidprintWithVoid(){coutarrTempObjects;arrT

c++ - filesystem::canonical 能否用于防止传递给 fstream 的文件路径的文件路径注入(inject)

我有一个公共(public)文件夹pub,里面有子文件夹和文件。用户现在给我一个相对文件路径,我执行一些映射,然后使用fstream读取文件并将其返回给用户。现在的问题是,如果用户给我一条路径,例如../fileXY.txt或其他考虑路径遍历或其他类型的文件路径注入(inject)的奇特内容。fstream只是接受它并读取我的公共(public)pub文件夹之外的潜在文件,或者更糟的是给他们一个我系统上所有文件的列表等......。在重新发明轮子之前,我在文件系统库中搜索我看到有这个std::filesystem::canonical函数并且有很多关于范式的讨论。我在这里有一个一般性问

c++ - 为什么在 VC++ 调试器上计算表达式时会出现 "member function not present"错误?

我在另一个DLLMyDll.dll上有一个静态方法MyClass::myMethod()。在我的代码中,我调用了这个方法,它编译并运行良好。但是当我在即时窗口(或监window口)中尝试MyClass::myMethod()时,我总是得到:MyClass::myMethod()CXX0052:Error:memberfunctionnotpresent这是为什么?更新:我发现当我使用contextoperator它有效:{,,MyDLL}MyClass::myMethod()不过,我不太确定为什么需要它,所以我要稍等片刻,看看是否有人有很好的解释。更新2:我被要求提供更多信息。不幸的是

c++ - 将 Boost FileSystem3 迭代器转换为 const char*

我正在使用BoostFileSystem3循环遍历目录中的一些文件,我需要将文件名转换为char*以用于另一个库,不幸的是我的C++foo缺失,任何人都可以帮忙吗?intmain(intargc,char*argv[]){pathp(argv[1]);//preadsclearerthanargv[1]inthefollowingcodetry{if(exists(p))//doespactuallyexist?{if(is_regular_file(p))//isparegularfile?coutvec;//storepaths,vecv;//sowecansortthemlate

c++ - IBPP/Firebird 客户端的 VC++ 异常处理在 x86 和 x64 上不同

我正在VisualStudio2015/VC++上使用IBPP。IBPP是firebird/interbaseAPI的c++包装器。IBPP,aC++ClientInterfacetoFirebirdServer这个包的一部分是一个小测试套件,你可以在这里下载:ibpp-2-5-3-1-src.zip从测试套件开始,你会发现一个简单的批处理文件来编译它x:...\ibpp-2-5-3-1-src\tests\vs2005\simplest-build.bat它使用vc++2015的原生x86和x64工具链编译良好。在编译之前你需要编辑第84到86行x:...\ibpp-2-5-3-1-

c++ - 分发 VC++ 运行时文件的正确方法

我有一个MFC应用程序,我正在尝试打包以进行部署。它似乎取决于文件“msvcr90.dll”、“msvcp90.dll”和“mfc90.dll”。分发这些文件的正确方法是什么?我无法使用合并模块,因为我的安装程序不支持它们。我知道我可以运行VCRedist_x86.exe,但出于各种原因我不想这样做。据我所知,我唯一的选择是将文件安装为私有(private)并行程序集。这是正确的吗?根据http://msdn.microsoft.com/en-us/library/ms235317(VS.80).aspx安装私有(private)程序集的正确方法是将“Microsoft.VC90.CR

如何在win10系统上安装使用vc6.0

vc6.0非常好用,但在win10上使用,需要解决如下几个问题。1:安装:在最后显示安装程序正在更新您的系统,然后就无响应。。解决办法:安装到custom这一个环节,选择DataAcess,然后选择右边的changeoption,进入里面,取消ADO开头的这一项。或者直接不选择DataAcess。2:调试过程中,终止调试,生成的进程程序依然在运行,任务管理器也无法杀死,只有退出vc的开发环境,此进程才会被关闭,严重影响开发效率。解决办法:先关闭VC6,然后在VC6.0安装目录下覆盖这两个文件DM.dll和TLLOC.dll。VC6.0默认安装路径:C:\ProgramFiles(x86)\Mi

c++ - 无法访问 vc++10 中的模板私有(private)继承

以下代码使用GCC4.4.6和Comeau4.3.10编译。#includestructA{intname;};templatestructC:T{usingT::name;};structB:privateA{friendstructC;};intmain(){Co;o.name=0;}它在VC++10中给出以下错误:main.cpp(4):errorC2877:'A::name'isnotaccessiblefrom'A'main.cpp(10):errorC2247:'A::name'notaccessiblebecause'B'uses'private'toinheritfro

c++ - 为什么 boost::filesystem::path::string() 在 Windows 上按值返回,而在 POSIX 上按引用返回?

来自boost/filesystem/path.hpp:#ifdefBOOST_WINDOWS_APIconststd::stringstring()const{[...]}#else//BOOST_POSIX_API//string_typeisstd::string,sothereisnoconversionconststd::string&string()const{returnm_pathname;}[...]#endif对于wstring()来说恰恰相反——在Windows上通过引用返回,在POSIX上通过值返回。这有什么有趣的原因吗? 最佳答案

c++ - 在 64 位 VC++ 2010 上用于 boost 的预编译 .libs

在64位VC++2010上是否有用于boost的预编译.libs? 最佳答案 我在http://boost.teeks99.com/找到了完整的一套.从Boost1.43开始,它们包括VS2010。bycomplete,他的意思是完整。VS2003、VS2005、VS2008、VS2010。32/64位+所有标准构建选项。进行完整安装,然后删除不需要的版本。非常轻松的安装。感谢所有从事这项工作的人。 关于c++-在64位VC++2010上用于boost的预编译.libs,我们在Stack