问题标签 [msvc12]

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 回答
915 浏览

c++ - 在 MSVC 2013 上编译 Boost MPL 示例

嗯,我成功搭建了测试程序:

但是当我尝试使用 boost::mpl::map 的时候,它吐了:

这是编译器输出:

即使执行以下操作:

失败:

我已经安装了 VS Community 2013 Update 4。我是使用不正确还是我安装的版本失败了?1.57.0 的发行说明没有引用任何内容,它们的错误系统也没有。

0 投票
2 回答
1348 浏览

clang - 用 clang-cl 编译可以,但是链接找不到基本的 libc 符号

对于编译为 LLVM IR 的语言 ( Runa ),我正在尝试启用对 Windows 的编译。我想启用与 MSVC 编译的东西的链接,所以我想使用一个 MSVC 目标三元组。我安装了 MSVC Community 2013 并有一个cmd.exe窗口运行随附的vcvars32.bat脚本,因此一堆 MSVC 的东西已添加到PATH. 但是,在尝试编译时,我收到以下链接器错误:

我理解关于_Unwind_RaiseException的那个,它可能不适合这个目标,但我不清楚为什么malloc()找不到像这样的基本 libc 东西。

0 投票
2 回答
182 浏览

c++11 - 由于带有 msvc12 的 constexpr (C++11),nmake of (OSRM v4.5.0) 失败

我在使用 nmake 构建 OSRM 后端 v4.5.0 时遇到问题(请参阅下文的错误输出)。msvc12 不支持“Coordinate.h”中的“constexpr”。 问题是,如何强制 cmake/nmake 使用 CTP 编译器!?

感谢您的回复

坐标.h

错误输出

D:\osrm450be\build>nmake

Microsoft (R) 程序维护实用程序版本 12.00.21005.1 版权所有 (C) Microsoft Corporation。版权所有。

扫描目标 COORDINATE [ 2%] 的依赖关系 构建 CXX 对象 CMakeFiles/COORDINATE.dir/data_structures/Coordinate.cpp.obj Coordinate.cpp D:\osrm450be\Include\osrm/Coordinate.h(37) : error C2144: syntax error : 'float' 前面应该有 ';' D:\osrm450be\Include\osrm/Coordinate.h(37):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 D:\osrm450be\data_structures\Coordinate.cpp(290):警告 C4244:'=':从 'double' 转换为 'float',可能丢失数据 NMAKE:致命错误 U1077: 'C:\PROGRA~2\MICROS~2.0\VC\bin\cl.exe' : 返回码 '0x2' 停止。NMAKE:致命错误 U1077:'"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\nmake.exe"':返回代码 '0x2' 停止。制作:

0 投票
1 回答
2011 浏览

c++ - 向量擦除迭代器超出范围

使用 C++ 将我的游戏引擎中的一些代码从 Mac 移植到 Windows,我得到这个运行时错误:“矢量擦除超出范围”。它适用于 Mac!

这会遍历一个“延迟”任务列表,这些任务存储在一个std::vector<DeferredCall>被调用的deferreds. 如果DeferredCall'sCondition()得到满足,那么它Execution()就会运行,并且应该从vector. 但是,相反,我得到了上述错误!

DeferredCall 看起来是这样的,并不是说它太重要了:

帮助?!

编辑:- 替代方法

我也试过这个,再次在 Mac 上工作:

但是,在这种情况下,我得到“向量迭代器不兼容”。

0 投票
1 回答
675 浏览

c - “不推荐使用的 POSIX 函数”`read` 引发异常

我正在调试模式下使用 MSVC(VS 2013)编译一个跨平台的 C 库(在 Linux 上运行良好,并且曾经在 Windows 上运行)。当我read从 C 标准库调用时,有时会出现异常:

将无效参数传递给认为无效参数致命的函数。

我相信参数(文件描述符、缓冲区、长度)是可以的。即使文件描述符无效,我也希望它返回-1。代码(不是我自己的,它是跨平台的,在 Linux 上运行良好)实际上检查返回值是否为 -1 并采取相应措施。

MSDN 非常没有帮助,只是说:

此 POSIX 函数已弃用。请改用符合 ISO C++ 标准的 _ read

但是,我只是尝试并替换read_read,并且效果很好。

  • read和 和到底有什么区别_read?由于read没有记录,我不能只是查找它。它似乎做同样的事情,但也会引发异常。

  • 我可以混合使用“不推荐使用的 POSIX 函数”和“符合 ISO C++ 的”* 吗?例如“open”和“_read”?它似乎工作正常

  • 我可以#define read _read等等,并期望它像在 Linux 上一样工作吗?


*) 请注意,尽管文档中使用了语言,但该项目是纯 C,而不是 C++。MSVC 的奇怪之处在于它不是真正的 C 或 C++,而是某种意义上的 C/C++。此外,引发异常的事实并不意味着我正在使用 C++,但它是 C、IIRC 的非标准 Windows 扩展。

0 投票
2 回答
1932 浏览

c++ - 当在其层次结构中具有菱形继承的类的多重继承时,函数的模糊继承

文字描述下面的代码):我有一个提供类集合的库。对于每组类,我们有两个具体类型,( ClassA_Partial, ClassA), ( ClassB_Partial, ClassB) 等。每个都分别实现 ( Interface_Partial, Interface)。此外,Interface is a Interface_Partial和 each Class? is a Class?_Partial - 创建一个菱形继承模式,其中顶部是虚拟继承的。

为什么同时继承和Interface_Partial时函数不明确?ClassAClassB

当我们不止一次继承一个公共接口时,为什么我们不能像我们通常做的那样消除歧义?例如

0 投票
1 回答
134 浏览

c++ - 使用可变参数模板参数传递成员函数指针是不明确的

为什么在我的示例中“TArgs”模棱两可?

编译器应该知道唯一存在的函数签名

TArgs并在此函数中推断正确:

我想这样称呼它:

CGame_Server 继承 CGame。

编译器输出:

4> error C2782: 'void INetInterface<CGame>::NetCall(void (__thiscall CGame::* )(CNetPeer *,TArgs...),CNetPeer *,TArgs...)' : template parameter 'TArgs' is ambiguous 4> NetInterface.h(82) : see declaration of INetInterface<CGame>::NetCall' 4> could be 'int, const CNetMessage&, bool' 4> or 'int, CNetMessage, bool'

它不能是'int,CNetMessage,bool',对吗?

有没有办法解决这个问题?我尝试投射到const CNetMessage&但奇怪的是这并没有帮助。而且没有其他同名的成员函数。

0 投票
1 回答
67 浏览

c - 全局变量似乎有两个不同的地址...?

考虑以下4个文件:

[核心.h]

[计数.h]

[计数.c]

[奇怪的问题.c]

我正在使用 Microsoft Visual Studio Community 2013。
运行上面的代码时,我希望“d”变量的值为 3。问题是执行永远不会中断循环,因为它不比较“ptr” ' 和 '&MY_MARK' 相等。(最终它会在尝试读取受保护的内存或其他内容时引发错误。)
实际上,我在 Watch 窗口中看到了两个不同的地址:

我知道我可以使用 'dummy' 变量而不是引用 '&MY_MARK' 来解决这个问题,但这不是重点。
我真的需要了解发生了什么,因为同样的问题发生在我的代码的不同部分,并且在那里没有很好的解决方法。

很抱歉这篇文章很长,但我发现没有办法让它更短。

0 投票
1 回答
2119 浏览

mingw - 在 Windows 上设置 pkg-config?

我用 MSVC 编译 pkg-config 并将完成的二进制文件 (*.exe) 放入%PATH%,目的是通过 MinGW shell 用 MSVC 编译/安装开源源代码,并让 pkg-config 将 *.pc 文件安装到PKG_CONFIG_PATH变量设置的某个位置,我已经使用“控制面板”>“环境变量”设置了该变量。

但是,在使用“make install”安装编译后的源代码后,没有 *.pc 文件安装到PKG_CONFIG_PATH中?

我错过了什么?我该怎么做才能将 *.pc 文件安装到PKG_CONFIG_PATH中?

0 投票
1 回答
512 浏览

visual-studio-2013 - Custom Build Rule fails after converting to VS2013

I need to integrate a legacy VS2008 project into my VS2013 solution. This project uses some custom build rules which initially worked after converting the .vcproj to a .vcxproj. However, when doing a fresh checkout of the project including the .vcxproj, the project file can no longer be opened.

I've tracked it down to this issue:

The project file references a couple of custom build rules like this:

However, the ms_mc.props file is not present, but there is a ms_mc.rule file. If I convert the VS2008 solution with VS2013 (and assumably also if I opened it in VS2008, which I don't possess), the ms_mc.props file (plus a .targets and a .xml file) is created. However, if I delete that file and open the converted VS2013 project, the file does not get created.

I realized, in the old .vcproj, the corresponding lines are

Why does VS2008 reference the .rule file and VS2013 imports the .props file without specifying the .rule file? And more importantly: How can I make this work again?

The .rule and .props file are added for reference


ms_mc.rule:

ms_mc.props (after Conversion to VS2013):