标签: visual-c++-2010

在构建消耗强类型数据集的C++/CLI项目时发出警告C4564

升级到VC++ 2010后,在构建使用C#项目中的强类型数据集的C++/CLI项目时,会引发警告C4564(方法定义不支持的默认参数).

ReadersManager.cpp(311):警告C4564:类'System :: Data :: DataTable'的方法'SetNewRecord'定义了不支持的默认参数'action'

调用方法时显式指定值"2"

从程序集"System.Data,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"导入类型"System :: Data :: DataTable"时发生此诊断.

从程序集'System.Data.DataSetExtensions,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'导入类型'System :: Data :: TypedTableBase'时发生此诊断.

从程序集"MyProductDataStoreCLR,Version = 4.5.0.9,Culture = neutral,PublicKeyToken = null"导入类型"MyProductDataStoreCLR :: ReadersDataSet :: ReadersDataTable"时发生此诊断.

警告是在调用时引发的System::Data::DataTable::Select,因此我无法在与之相关的调用代码中进行任何更改SetNewRecord.

这是C++/CLI不支持新的C#可选参数功能的问题吗?

warnings c++-cli strongly-typed-dataset visual-c++ visual-c++-2010

3
推荐指数
1
解决办法
2957
查看次数

无法将参数从'const char [20]'转换为'LPCWSTR'

编译此代码时:

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInsance,HINSTANCE hPrevInstance,PSTR cmdLine,int showCmd){
    MessageBox(0,"First Win32 Program","Window Tittle",MB_OK);
    }
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

错误C2664:'MessageBoxW':无法将参数2从'const char [20]'转换为'LPCWSTR'1>指向的类型不相关; 转换需要reinterpret_cast,C风格的转换或函数式转换

我究竟做错了什么?

c++ winapi visual-c++-2010

3
推荐指数
2
解决办法
2万
查看次数

TR1正则表达式:捕获组?

我正在使用TR1正则表达式(对于VS2010),我正在尝试做的是为名为"name"的组搜索特定模式,为名为"value"的组搜索另一种模式.我认为我想要的是一个捕获组,但我不确定这是否是正确的术语.我想将匹配分配给模式"[^:\ r \n] +):\ s"到名为"name"的匹配列表,并匹配模式"[^\r \n] +)\ r \n \n)+"到名为"value"的匹配列表.

到目前为止我的正则表达式是

string pattern = "((?<name>[^:\r\n]+):\s(?<value>[^\r\n]+)\r\n)+";
Run Code Online (Sandbox Code Playgroud)

但是程序运行时正则表达式T4R1标头不断抛出异常.我的模式的语法有什么问题?有人可以展示一个能够做我想要完成的事情的示例模式吗?

另外,如何在模式中包含一个匹配的子字符串,但实际上不包含结果中的子字符串?例如,我想匹配模式的所有字符串

"http://[[:alpha:]]\r\n"
Run Code Online (Sandbox Code Playgroud)

,但我不想在返回的匹配结果中包含子字符串"http://".

c++ regex visual-c++-2010

3
推荐指数
1
解决办法
2197
查看次数

指针问题(仅在发布版本中)

不确定如何描述这个,但在这里我去:

出于某种原因,当试图创建我的游戏的发布版本进行测试时,它的敌人创建方面是行不通的.

Enemies *e_level1[3];
e_level1[0] = &Enemies(sdlLib, 500, 2, 3, 128, -250, 32, 32, 0, 1);
e_level1[1] = &Enemies(sdlLib, 500, 2, 3, 128, -325, 32, 32, 3, 1);
e_level1[2] = &Enemies(sdlLib, 500, 2, 3, 128, -550, 32, 32, 1, 1);
Run Code Online (Sandbox Code Playgroud)

多数民众赞成我如何创造我的敌人.在调试配置中工作正常,但是当我切换到发布配置时,似乎没有正确初始化敌人.

对我来说,这似乎有点奇怪,它在调试中工作,但不是在发布,任何帮助赞赏的主要是我做错了什么.

c++ visual-c++-2010

3
推荐指数
1
解决办法
131
查看次数

ifstream :: read在ASCII 26处失败

这个问题长期困扰着我.例如,代码

ifstream in;
char temp;
int a;

in.open ("Random.txt");

for (a = 0;a < 10000;a++)
    in.read (&temp, 1);

in.close ();
Run Code Online (Sandbox Code Playgroud)

工作正常,直到ifstream遇到替换字符(ASCII = 26).然后,对于所有后续角色,ifstream::read给我temp = -1.我真的不希望这种情况发生,而是希望它继续从文件中读取字符而不是-1.我做错了什么?

c++ ascii visual-studio-2010 visual-c++ visual-c++-2010

3
推荐指数
1
解决办法
1118
查看次数

警告C4552:'<':运算符无效; 预期的操作员有副作用

我的程序中有一堆循环.我得到这些错误的行如下:

for (size_t i=0; i++;i<student.length())
Run Code Online (Sandbox Code Playgroud)

for (int i=0; i++; i<13)
Run Code Online (Sandbox Code Playgroud)

似乎无法弄清楚:/我在size_t类型的第一个循环中创建了迭代变量,因为.length函数返回size_t变量(或互联网说的那样).即使这是问题,我也看不出为什么我会在第二个循环上得到错误.

c++ visual-c++-2010

3
推荐指数
1
解决办法
7362
查看次数

堆上非常大的数组(Visual C++)

我希望有人可以帮助我,我正在尝试使用visual c ++ 2010在我的应用程序上创建一个int [400000000](4亿)数组但是它会产生溢出错误相同的代码在linux上运行g ++.我需要这个,因为我正在使用大型矩阵.先感谢您.

c++ arrays visual-c++ visual-c++-2010

2
推荐指数
1
解决办法
3080
查看次数

如何使用visual studio 2008打开vcxproj(visual c ++项目)

有谁知道如何在visual studio 2008中打开vcxproj.看来这个文件只是由visual studio 2010打开的不是吗?

c++ msbuild visual-c++-2008 visual-c++ visual-c++-2010

2
推荐指数
1
解决办法
5622
查看次数

VS2008到VS 2010的迁移 - 一个突破性的变化?

我将C++代码从VS2008迁移到VS2010时遇到了问题.到目前为止,我无法找到解释原因,并感谢您的帮助.

我们有一个自定义内存分配器,它驻留在一个DLL中.在其余的代码中,我们使用预处理器将分配重定向到我们的函数.以下简单代码在VS2008中正确编译,但在VS2010中没有.

在stdafh.h中:

#define free my_free
#include <string>
Run Code Online (Sandbox Code Playgroud)

在VS2010中,我得到:

1>d:\program files\microsoft visual studio 10.0\vc\include\xdebug(62): error C3861: 'free': identifier not found
Run Code Online (Sandbox Code Playgroud)

来自这条线:

template<class _Ty>
    void __CLRCALL_OR_CDECL _DebugHeapDelete(_Ty *_Ptr)
    {   // delete from the debug CRT heap even if operator delete exists
    if (_Ptr != 0)
        {   // worth deleting
        _Ptr->~_Ty();
        // delete as _NORMAL_BLOCK, not _CRT_BLOCK, since we might have
        // facets allocated by normal new.
        free(_Ptr);
Run Code Online (Sandbox Code Playgroud)

任何帮助或想法将受到高度赞赏!

摩西

c++ visual-studio-2010 visual-c++-2010

2
推荐指数
1
解决办法
998
查看次数

资源 (.rc) 文件包含头文件忽略 Visual Studio 项目包含路径

我正在尝试在资源文件 (.rc) 中包含一个头文件。路径是这样的"folder_a/sub_folder_b/file_name.h"

folder_a 所在的文件夹包含在项目的 c++ 包含目录中。

当我在同一个项目的 .cpp 文件中编写相同的 #include 指令时,它会正确编译,但对于 .rc 文件,VS 找不到头文件。

在源代码编辑器窗口中,当我右键单击 #include 指令并选择“打开文档”时,弹出错误指出它找不到文件,显示搜索文件的路径,但项目的包含路径不是显示。

如果我对 .cpp 文件中的虚拟 #include 执行相同的操作(同样是同一个项目),所有路径都会显示在错误消息中。

我的结论是 VC++ 不使用项目中定义的包含目录,用于 .rc 文件中的 #include 指令。

这是真的?如果没有 - 我做错了什么?如果是 - 有没有办法解决它?

我试图避免:

#include "../../../parent_folder/folder_a/sub_folder_b/file_name.h"

但如果需要,我会去做。

resource-files include visual-c++ visual-c++-2010

2
推荐指数
1
解决办法
5678
查看次数