问题标签 [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++ - PCL 构建时出现 boost::throw_exception 问题
boost::throw_exception
在构建 PCL 时如何避免丢失?
我过去在 Windows (MSVC 2013) 上构建了 PCL 几次,但我从未见过这个错误。它今天和昨天一直在阻止我:
似乎BOOST_NO_EXCEPTIONS
设置在 中boost\config\compiler\visualc.hpp
,这阻止boost/throw_exception.hpp
了定义它。
我尝试通过 CMake 和 Visual Studio 中的项目属性设置TPN_WIN32
为/EHsc
(请参阅此答案)但无济于事,甚至尝试将定义偷偷带入高级 PCL 包含(请参阅此答案),但没有任何效果。
我的 CMake 生成器是Visual Studio 12 2013 Win64
,我的定义是:
我试过了:
- 删除 Qt 和 VTK
- 使用 Boost 1.60、1.66 和 1.59
- 链接到 boost 的共享和静态版本。(PCL 似乎不喜欢 Windows 上的共享提升...)
- 尝试构建 PCL 的共享和静态版本
我觉得我在追逐错误的东西,或者错过了什么。也许我错过了_CPPUNWIND
异常的定义?我真的只是卡住了。
c++ - DLL 中的 MSVC 未解析的永恒符号
有人可以帮我理解为什么 MSVC 12 2013 报告这些符号未解析吗?
该符号DEG_TO_RAD
是在我的文件中定义的,当我启动 MSVC 时Wml.dll
,我很确定它在我的文件中。%PATH%
DLL的输出dumpbin
为:
对于 LIB:
我在这里设置了一个显示链接失败的最小示例,不幸的是我不确定我是否可以放置标题或.lib
文件。
我对 . 不太熟悉dumpbin
,我更习惯nm
..c++filt
但对我来说,这表明符号DEG_TO_RAD
是在 DLL 中导出的。
在 Linker 命令行窗口中,我可以看到 bin 路径(DLL 的路径)作为 提供/LIBPATH
,并且还提供了的完整路径.lib
(在“附加依赖项”中提供。)
这可能是因为我可能将共享库和静态库混合在一起吗?或者一个迹象表明,尽管我认为 DLL 在我的路径中,但不知何故它不是?或者 DLL 中的符号实际上并不存在?(等价于非T
符号类型 in nm
)
我正在浏览这个答案中给出的列表,但到目前为止我只是对它为什么不起作用感到困惑。
qt - 单一设置 exe 文件 Qt 应用程序部署
我想用不同的 Windows 系统部署 Qt 应用程序。所以我使用windeployqt工具为我的应用程序生成了exe文件,该工具由exe(Mingw)文件和附加文件夹和dll文件组成。
我的要求是如何生成 exe(基于 MSVC 编译器)文件将部署在不同的计算机上。
提前致谢
qt - 即使从 MSVC2017 构建,Qt 应用程序也会提示计算机上缺少 msvcp120.dll
我有一个 Qt 应用程序(Win x64 在这里下载http://api.straw-solutions.cz/?action=downloadSoftware&productKey=lumen&platform=win_x86_64)。当我尝试发布它时,我得到一个回显,在启动应用程序时,它提示 MSVCR120.dll 丢失。但是,可以按确定,应用程序将毫无问题地启动。
这对我来说真的没有意义,因为该应用程序是使用 MSVC2017 构建的。我已经浏览了应用程序和插件的依赖项,但找不到 msvcr120。我还尝试从我的系统中删除 msvcr120.dll 并启动应用程序,它开始正常。
另请注意,我将 VS2017 运行时与应用程序捆绑并安装。
c++ - 转换运算符不会在 Visual Studio 2013 中编译,但使用 gcc 编译成功
以下代码使用 gcc 成功编译,但在 Visual Studio 2013 中编译失败:
我相当确定这是 VS2013 编译器中的一个错误,因为它确实在较新版本的 Visual Studio 中编译,但问题是我工作的地方,我们被困在使用 VS2013 中。让他们切换编译器是不可能的。(我们必须使用与提供我们软件的供应商使用的编译器相同的编译器,他们使用的是 VS2013。)
下面列出了错误:
我的问题是,即使有 VS2013 的限制,是否有任何解决方法可以让此代码成功编译和运行?
templates - 为什么 MSVC12 的自动矢量化器不分析函数模板?
VS2013 中的自动矢量化或自动并行器 (/Qpar) 引擎看不到函数模板。
例如,这段代码:
似乎已被识别,我从 /Qvec-report:2 和 /Qpar-report:2 获得了适当的输出:
但是,一旦我someFunc()
变成一个函数模板:
我从日志中的自动矢量化器或自动并行化器中一无所获:
我没有使用 /GL,如Why would /Qvec-report:2 return nothing 中所述?(MSVC 2012)
visual-c++ - 如何在 Microsoft VIsual C 编译器中声明符号驻留在特定地址?
我想编译一个独立的二进制文件,然后我将在另一个二进制文件的上下文中逐字节复制(可能使用十六进制编辑器)。我可以通过 '/BASE' 选项指定基数,但我无法找到一种方法让我说类似的话:
c - 在 C 中实现静态函数注册表的可移植方式
通过使用节变量属性并依靠 ELF 链接器定义指向自定义节地址的和__start_<section>
符号__stop_<section>
,可以在 C 中为 gcc/clang 实现静态函数注册表。
(请参阅下面的使用这种方法的示例,它应该说明这一点。)
然而,这种方法非常特定于 GCC、ELF 和 Unix/Linux。
是否有另一种方法可以解决同样的静态函数注册表问题,只是以更便携的方式?
特别是,我希望能够针对 Windows 的 MSVC 编译器。
例如,考虑这个程序使用这组源文件:
1) 注册表.h
2) 交流
3) 公元前
4) 抄送
5) main.c
6) 生成文件
构建:
执行:
c++ - 在我的程序中使用 QT 对象时访问冲突
我想将 QT 集成到现有的桌面 C++ 项目中。要求是QT 应该使用 MSVC2013 64 位静态构建并为编译器设置/MT 标志,所以我从源代码构建QT5.5.0。
集成按预期工作,我设法从 QtCore.lib 测试了一些 Qt 的对象(QFile,QObject)。该应用程序似乎运行没有任何问题,没有崩溃。但是,该程序存在-1073741819
错误级别。我附加了调试器并尝试在 Visual Studio 中捕获异常,我得到以下信息:
我撤消了代码集成,直到我在函数中只有一个简单的QObject object;
声明。通过这个简单的声明,程序存在错误,没有使用任何 Qt 对象,程序正常存在。
这里发生了什么?可能是到 Qt 的静态链接?可能是 Qt5.5 版本中的错误?或者我的程序中的其他东西试图在清理过程中以某种方式处理 qt .libs?
更新
感谢 IDA 反编译器,我设法找出崩溃发生的位置,但我仍然不知道为什么。它崩溃了void __fastcall qt_watch_adopted_thread(HANDLE hObject, struct QThread *)
。正如我所注意到的,Qt 创建了一些在程序退出时不会被销毁的线程,并且这些线程会尝试访问无效内存。也许它与这个打开的 qt 错误有关:https ://bugreports.qt.io/browse/QTBUG-40247但就我而言,我没有加载任何插件。