草庐IT

vc_runtimeMinimum_x

全部标签

c++ - 在 VC++14 中使用 std::basic_stringstream<char16_t> 时出错

我正在尝试做一些基本的char16_t字符串(u16string)处理,但遇到了一些麻烦。这个小程序:#include#includeintmain(){intfoo=65;std::basic_stringstreamss;ss创建错误:ErrorC2491'std::numpunct::id':definitionofdllimportstaticdatamembernotallowed.xlocnum259我已经在一些在线编译器上试过了,但是那里没有错误。感谢我能得到的任何帮助! 最佳答案 好的,它看起来像是VC++标准库或V

c++ - 两个 .c 文件具有相同的编译设置 - VC++ 报告没有错误并且不编译其中一个

我正在尝试将开源项目中的一组.c文件编译成静态库。我已经创建了一个VC++9项目文件,像往常一样设置所有内容。我在项目中添加了两个.c文件。它们没有任何特殊的编译设置——所有设置都是在项目级别设置的,并且设置为默认值,除了我关闭了预编译头。我按下“构建项目”-VC++显示“完成”,创建了两个.obj文件和一个.lib文件,但生成的.lib文件中不存在来自其中一个.c文件的函数。如果我在两个文件之一的开头添加#error,VC++将停止编译并报告。但是如果我对另一个文件做同样的事情,它只是静默编译并且不报告错误,所以它显然没有编译文件,这就是函数没有到达.lib文件的原因。现在我假设如果

c++ - VC++ 中 Unicode 字符串的语法是什么?

你应该如何在VC++中使用unicode字符串?当然你应该#defineUNICODE,但是你的字符串呢?应该在所有文本周围使用TEXT()或_T()宏,还是应该在字符串前面放一个L?我相信现在所有的程序都应该使用unicode,所以使用L前缀不是最干净吗?意见? 最佳答案 这取决于你想达到什么目的。如果您想确保您的代码在使用和不使用Unicode时都能正确编译和工作,请使用TEXT或_T宏,并调用“默认”Win32函数名称(例如CreateWindow)。如果你想确保你的程序总是使用UnicodeAPI,那么你应该在你的字符串前面

c++ - 尝试包含 '#include <boost/regex.hpp>' 时,我得到 : 1>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc100-mt-gd-1_39.lib'

不知道为什么会这样,我从here下载了库虽然我有一个名为“libboost_regex-vc90-mt-gd-1_39.lib”的库,但我没有一个名为“libboost_regex-vc100-mt-gd-1_39.lib”的库,将vc90重命名为vc100就可以了但我不确定这是否是理想的解决方案?#include"stdafx.h"#include#include#include#defineBOOST_ALL_NO_LIBint_tmain(intargc,_TCHAR*argv[]){boost::arraya;boost::smatchs;getchar();return0;}

c++ - 名称查找不依赖于 VC++2008 Express 中的模板参数。这是一个错误吗?

在对C++模板进行一些试验时,我设法生成了这个简单的代码,其输出与我根据对C++规则的理解所预期的不同。voidbar(doubled){std::coutvoidfoo(Tt){bar(3);}voidbar(inti){std::cout当我在VC++2008Express中编译这段代码时,函数bar(int)被调用。如果模板正文中的bar(3);依赖于模板参数,那将是这种行为。但事实并非如此。我找到的规则here说“C++标准规定,在解析模板函数或类时,所有不依赖于模板参数的名称都绑定(bind)到它们当前的定义”。我错了吗,解析模板函数foo时bar的“当前定义”是无效栏(双d

c++ - VC++2008项目总是 "out of date"

在一个解决方案中,我有两个VC++项目。项目A的链接器输入是由项目B编译的.obj文件。VisualStudio(2008)总是告诉我项目A“已过时”,并在每次我想运行/调试/构建时提示我询问是否要重建它/ETC。即使在构建整个解决方案后立即:我做了一个成功的完整构建,然后再次单击构建,它想要重新链接项目A。如何防止这种情况发生?有人知道这里发生了什么吗? 最佳答案 我认为解决方案是停止使用其他项目中的.obj文件。相反,将A和B项目通用的代码分解到自己的静态库C中,并将A和B链接到它。

c++ - 如何在 VC++ 中更改 __stdcall 的导出名称修饰?

这就是我现在声明导出函数的方式:extern"C"__declspec(dllexport)Iexport_class*__stdcallGetExported_Class();当VS2008为此编译源代码时,生成的dll在其导出表下包含:_GetExported_Class@0为了与其他编译器兼容,我需要将上面的装饰改成这样:GetExported_Class将调用约定更改为__cdecl会将其装饰成我想要的方式,但约定是错误的,因此我无法使用它。我需要它按照__cdecl的外观进行装饰,但改用__stdcall。有没有不使用.def文件来做到这一点的方法?有没有我可以传递给link

c++ - VC++ 2012 中出乎意料的模棱两可的重载解析

VisualC++2012。代码。我认为它应该编译;编译器恭敬地不同意。我已将我的复制范围缩小到:structB{};voidfoo(B*b,signedintsi){}//Overload1voidfoo(Bconst*b,unsignedintui){}//Overload2intmain(){Bb;unsignedintui;foo(&b,ui);}所以我们有两个候选的重载决议。对于第一个重载,第一个参数完全匹配,第二个参数需要整数转换(无符号到有符号)。对于第二个重载,第二个参数完全匹配,第一个参数需要cv调整(因为&b是指向非常量的指针)。现在看来,这应该是完全没有歧义的了。

VC2010 中的 C++0x 对等构造函数

根据C++0xspec,以下是合法的classA{A(inti):x(i){}A():A(0){}intx;};但它在VC2010中无法编译(“A”不是非静态数据成员或类“A”的基类)。有人知道哪里出了问题吗? 最佳答案 撰写本文时,VisualC++2010(也称为VC++10.0)不支持委托(delegate)构造函数,而这正是您的代码片段所需要的。VC++10.0仅对C++0x提供部分支持,截至撰写本文时,还没有编译器实现了整个C++0x功能集(尽管这种情况很快就会改变,尤其是在C++0x标准最终确定之后)。ScottMeye

ios - 如何从VC subview 发送数据到VC父 View

我有一个firstController和一个secondController。当在firstController中单击一个单元格时,一个小键盘(=secondController)将作为subview加载。我想将小键盘的按钮连接到第一个集合,以便我能够立即在firstController的标签中显示数字。数据交易应该是即时的。我无法将按钮连接到第一个ViewController。这是我第一次尝试使用它,所以我可能完全以错误的方式看待它。我使用了两个不同的viewController来维护Storyboard中的概览。关于如何将数据从VCsubview转发到父View有什么建议吗?