问题标签 [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.
c++ - 在 MSVC 2013 上编译 Boost MPL 示例
嗯,我成功搭建了测试程序:
但是当我尝试使用 boost::mpl::map 的时候,它吐了:
这是编译器输出:
即使执行以下操作:
失败:
我已经安装了 VS Community 2013 Update 4。我是使用不正确还是我安装的版本失败了?1.57.0 的发行说明没有引用任何内容,它们的错误系统也没有。
clang - 用 clang-cl 编译可以,但是链接找不到基本的 libc 符号
对于编译为 LLVM IR 的语言 ( Runa ),我正在尝试启用对 Windows 的编译。我想启用与 MSVC 编译的东西的链接,所以我想使用一个 MSVC 目标三元组。我安装了 MSVC Community 2013 并有一个cmd.exe
窗口运行随附的vcvars32.bat
脚本,因此一堆 MSVC 的东西已添加到PATH
. 但是,在尝试编译时,我收到以下链接器错误:
我理解关于_Unwind_RaiseException
的那个,它可能不适合这个目标,但我不清楚为什么malloc()
找不到像这样的基本 libc 东西。
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' 停止。制作:
c++ - 向量擦除迭代器超出范围
使用 C++ 将我的游戏引擎中的一些代码从 Mac 移植到 Windows,我得到这个运行时错误:“矢量擦除超出范围”。它适用于 Mac!
这会遍历一个“延迟”任务列表,这些任务存储在一个std::vector<DeferredCall>
被调用的deferreds
. 如果DeferredCall
'sCondition()
得到满足,那么它Execution()
就会运行,并且应该从vector
. 但是,相反,我得到了上述错误!
DeferredCall 看起来是这样的,并不是说它太重要了:
帮助?!
编辑:- 替代方法
我也试过这个,再次在 Mac 上工作:
但是,在这种情况下,我得到“向量迭代器不兼容”。
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 扩展。
c++ - 当在其层次结构中具有菱形继承的类的多重继承时,函数的模糊继承
文字描述(下面的代码):我有一个提供类集合的库。对于每组类,我们有两个具体类型,( ClassA_Partial
, ClassA
), ( ClassB_Partial
, ClassB
) 等。每个都分别实现 ( Interface_Partial
, Interface
)。此外,Interface
is a Interface_Partial
和 each Class?
is a Class?_Partial
- 创建一个菱形继承模式,其中顶部是虚拟继承的。
为什么同时继承和Interface_Partial
时函数不明确?ClassA
ClassB
当我们不止一次继承一个公共接口时,为什么我们不能像我们通常做的那样消除歧义?例如
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&
但奇怪的是这并没有帮助。而且没有其他同名的成员函数。
c - 全局变量似乎有两个不同的地址...?
考虑以下4个文件:
[核心.h]
[计数.h]
[计数.c]
[奇怪的问题.c]
我正在使用 Microsoft Visual Studio Community 2013。
运行上面的代码时,我希望“d”变量的值为 3。问题是执行永远不会中断循环,因为它不比较“ptr” ' 和 '&MY_MARK' 相等。(最终它会在尝试读取受保护的内存或其他内容时引发错误。)
实际上,我在 Watch 窗口中看到了两个不同的地址:
我知道我可以使用 'dummy' 变量而不是引用 '&MY_MARK' 来解决这个问题,但这不是重点。
我真的需要了解发生了什么,因为同样的问题发生在我的代码的不同部分,并且在那里没有很好的解决方法。
很抱歉这篇文章很长,但我发现没有办法让它更短。
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中?
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):