问题标签 [visual-c++-2013]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
441 浏览

c++ - IUnknown 指针引用

为什么 Visual Studio 编译器对

但不是

在哪里调用它看起来像

编译器错误是

3 IntelliSense:不能使用“IDXGIFactory *”类型的值初始化“IUnknown *&”类型的引用(非 const 限定)c:\Users\Carl\Documents\Visual Studio 2013\Projects\Project1\Project5\main .cpp 29 10 项目5

我在研究中发现的最接近的事情是编译器一次只会进行一次类型转换,但这不可能是正确的,因为这样const & 版本应该会中断进行类型和 const 转换;但是实际上无法编译的是 & 版本。

0 投票
3 回答
7322 浏览

c++ - 如何让 VS2013 停止生成对 __dtol3、__dtoui3 和其他整数类型之间转换的函数的调用?

我正在升级针对 INtime RTOS 的 Visual Studio 2010 项目。执行强制转换操作的代码无法链接。在调查“内联汇编”输出文件时,发现对于某些整数转换操作,VS2013 正在生成汇编指令以调用 __dtol3、__dtoui3、__dtoul3、__ltod3 和 __ultod3。问题是 INtime 库不包含这些函数的定义。我已经验证 VS2013 对 Win32 目标的 Debug 和 Release 版本执行相同的操作。

有没有办法让 VS2013 停止生成对这些函数的调用?

0 投票
2 回答
3643 浏览

c++ - 未解析的外部符号 _CLSID_VdsLoader

我正在尝试编写一个可以管理 Windows 系统中的硬盘/卷/分区的程序。使用 Windows 的虚拟磁盘服务来完成此任务似乎是个好主意。

我写了一些代码来尝试一下,但是在链接它时出现以下错误:error LNK2001: unresolved external symbol _CLSID_VdsLoader

微软的示例代码表明我必须链接到 ole32.lib,并且通过谷歌搜索我了解到 uuid.lib 也参与其中。我的项目设置中的“附加依赖项”行如下:

kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)

如您所见,前面提到的两个库都包括在内。

我正在 Visual C++ Express for Windows Desktop 2013 上尝试所有这些。这可能是问题吗?也许 express 版本不支持 100% 的可用 COM 对象?如果不是这样,那还能是什么?

0 投票
2 回答
135 浏览

c++ - Visual C++ 可以检查不匹配的原型和实现吗?

如果 VC 编译器找不到原型的实现,它会发出警告吗?

示例(注意参数不匹配):

更新:显然 G++ 有一个名为的开关-Wmissing-declarations,我认为它可能符合我的需要,但显然适用于 VC++。

0 投票
1 回答
450 浏览

c++11 - VC++ 2013 Initializer List 问题

我有以下代码不能用 vc++ 2013 编译。它是编译器错误吗?

这与 GCC 4.8 和 MinGW 编译得很好。我能做些什么来消除编译错误?

0 投票
1 回答
946 浏览

c++ - 在基于范围的 for 循环中报告了奇怪的语法错误

在 Visual Studio 2013 中,我在一个空的、全新的命令行解决方案中编写了以下内容:

当我编译时,我收到以下错误:

在包含单个分号的行上。我发现编译器错误了吗?还是基于范围的 for 循环超出了我的理解范围?

0 投票
1 回答
1275 浏览

winforms - 在 Visual C++ 中检查 MySql 连接是否打开

对不起,如果你感到无聊。我搜索了几个搜索引擎,但没有得到任何结果。无论如何,我正在一个数据库是 mysql 的应用程序中工作。现在我创建了一个数据库包装类,并想检查连接是否已经打开。你能帮我吗?

我需要检查 if(conDatabase->HasBeenOpened()) { conDatabase->Open();}

0 投票
0 回答
6146 浏览

wix - 如何使用 WiX 引导程序检查是否已安装 Visual C++ 2013 可再发行组件?

我正在尝试为 WiX 安装程序创建引导程序。我需要安装 VC++ 2013 可再发行包(适用于 x86 和 x64 平台)。如果这些软件包已经安装,我想跳过它们的安装。为此,我为每个包添加下一个元素到 product.xml:

所以问题是:产品代码应该是什么?

在 Google 没有帮助我之后,我尝试提取 vcredist_2013_x86.exe 并查看 msi 文件属性,但这是另一个问题。使用 7Zip 解压后,我只得到了一堆名称奇怪的文件,例如:“0”、“u0”、“u1”、“u2”等。文件“0”原来是刻录清单。它包含产品代码:for x86:{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}和 for x64: {A749D8E6-B613-3BE3-8F5F-045C84EBA29B}。所以我尝试使用它们,但没有运气。MsiProductCheck尽管安装了软件包,但返回 -1。

然后我查看了 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall 注册表项发生了什么变化(我正在使用 Win8.1)。安装期间添加的密钥和卸载后删除的密钥不同:{ce085a78-074e-4823-8dc1-8a721b94b76d}x86 和{7f51bdb9-ee21-49ee-94d6-90afc321780e}x64。但他们也没有合作MsiProductCheck。即使安装了它们,它的结果仍然是-1(未知产品)。

所以我现在很绝望。我唯一的想法是使用RegistryCheck而不是MsiProductCheck检查卸载中的密钥。但我想知道这里有什么问题。VC++ 2013 可再发行组件应使用什么产品代码?为什么在软件包安装期间添加的唯一密钥不起作用MsiProductCheck

0 投票
1 回答
39 浏览

c++-cli - 只能为托管类创建句柄。为什么?

我是 Visual C++ 的初学者,目前只是学习它的概念。

我开始知道有 2 个类:托管类和价值类。

  1. 值类就像普通的 C++ 类,可以创建其对象来保存数据。
  2. 托管类是由垃圾收集器管理的内存。

问题:

  • 无法创建托管类的对象,只能创建句柄。为什么是这样?
  • 请给我一个关于实例的简要想法?它只是一个对象创建还是其他什么?
0 投票
0 回答
115 浏览

c++ - 将 VS2013 C++ 结构打包与旧的 MSVC++ 编译器版本匹配?

我正在尝试在 CLI C++ 控制台应用程序(使用 Visual Studio 2013)中包装非托管 C++ 库(使用 MSVC++ 编译器版本 13 编译,可追溯到 2002 年或 2003 年),以便最终从 C# 项目中调用它。

我已经设法让我的包装器构建和运行,但是从它运行时得到的结果来看,我怀疑 VS2013 的 C++ 编译器包装它的结构与非托管库读取它们的方式不同。

有没有办法告诉 VS2013 以与版本 13 编译器相同的方式打包其结构?还是我必须找到旧的编译器并编写一个仅公开基本的未打包类型的中间包装器?