jjzjj

c++ - MSVC 函数名修饰

这个问题在这里已经有了答案:Isthereturntypeofafunctionpartofthemangledname?(2个答案)关闭10个月前。在Linux中,GCC编译器不会将返回类型添加到函数的错位名称中,在主要版本更改的情况下不会导致ABI不兼容错误。因此,我通常根据主要版本在内联命名空间中使用abi_tag来强制执行这种行为。MSVC2017如何在Windows中处理函数名称?我需要在内联命名空间中添加类似于abi_tag的内容来复制此行为吗?

windows - 使用 MSVC 2010 构建 OpenSSL 1.0.1c 时出错

我已经成功配置了OpenSSL用于构建,但是当我运行nmake时,我得到了这个:c:\Development\Qt\5\OpenSSL>nmake-fms\ntdll.maktestMicrosoft(R)ProgramMaintenanceUtilityVersion10.00.30319.01Copyright(C)MicrosoftCorporation.Allrightsreserved.cl/Fotmp32dll\md4test.obj-Iinc32-Itmp32dll/MD/Ox/O2/Ob2-DOPENSSL_THREADS-DDSO_WIN32-W3-Gs0-GF-Gy

c++ - 了解 C/C++ 中 Windows/MSVC 的一些反调试内联汇编

我正在尝试了解https://github.com/nemesisqp/al-khaser/blob/0f74c40dde8ba060807e031271f81457a187fa08/DebuggerDetection.cpp#L603中的一些反调试器功能会__asm{moveax,fs:[30h]moval,[eax+2h]movIsDbg,al}功能相同__asmmovIsDbg,[fs:[0x30]+0x2]如果不是,为什么不呢?此外,如何将其转换为纯C/C++?如何获取线程信息(特别是fs:[30h])?会BOOLInt2DCheck(){//TheInt2DCheckfunc

c - 在 MSVC6 中处理大于 2 GB 的文件!

WindowsMSVC6中的普通文件相关函数,如fseek、ftell等,只能处理最大2GB的文件(据我目前的理解,如有错误,请指正)。我想处理大于2GB的文件。我该怎么办?有哪些功能可用? 最佳答案 我不确定,但限制是4GB,OSAPI和使用这些API的标准库以及使用的文件系统。ftell、fseek函数使用32位整数,因此您将无法处理大于4GB的文件。您将不得不直接使用OSAPI。所以你必须小心你使用的函数,例如为了获取文件大小你必须使用ex函数GetFileSizeEx,因此您必须确保使用使用64位文件偏移量的函数。同样适用于

c++ - 删除 msvc dll 依赖以运行 qt 应用程序

如何删除msvcdll(例如:msvcr100.dll)依赖性以运行qt应用程序?我开发了一个qt应用程序,它在dveloper机器上运行良好,但无法在任何其他机器上运行,并给出错误消息“程序无法启动,因为您的计算机中缺少MSVCR100.dll”。我可以通过在应用程序文件夹中复制该文件来解决此错误,但我不想复制,而是想静态链接或以其他方式删除该依赖项。提前致谢 最佳答案 问题是您可能正尝试在安装了与用于构建应用程序本身的版本不同的VisualStudio(MSVC)版本的计算机上运行应用程序。通常,正确的解决方案是在目标机器上安装

windows - 我如何在我的 MSVC++ 控制台应用程序中休眠?

我想调用Sleep(x),其中x是sleep的毫秒数。我知道这是功能,但它对我不起作用。我需要包括什么?---已解决---我使用的是编译器选项/Za,它禁用了Sleep()实现中使用的nativeWindows扩展。 最佳答案 sleep在Winbase.h中定义,但您应该包含Windows.h以获取它。将来您可以通过调出VisualStudio的帮助或搜索MSDN来自己查找信息。所有关于Win32API调用的信息都应该在那里。 关于windows-我如何在我的MSVC++控制台应用程序

c++ - 在 Debug模式下构建 Qt 5.10 时 MSVC 编译器崩溃

使用MSVC++2017x64编译器在Debug模式下编译Qt5.10失败。在Release模式下,不会出现该错误。错误本身是:```C:\Qt\5.10\build\qtbase\bin\moc.exe-DUNICODE-D_UNICODE-DWIN32-DWIN64-DQT_NO_USING_NAMESPACE-DQT_NO_FOREACH-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT-DQT_BUILD_CORE_LIB-DQT_BUILDING_QT-D_CRT_SECURE_NO_WARNINGS-D_USE_MATH_DEFINES-DQT

c++ - windows 7和msvc下编译QT 5.3.2

我使用的是msvc2013(ultimate-64位)、windows764位。我通过msvc2013(64位)编译了icu4c54.1。现在我尝试编译qt5.3.2-everywhere-opensource-src(我在那里添加了补丁(我替换了QWebFrame.cpp))我使用了visualstudio的CMD开发者工具。---我执行了这些命令:cdD:\qtd:configure-prefixD:\Qt\Qt_making-platformwin32-msvc2013-opensource-c++11-maketools-makelibs-qt-sql-sqlite-no-op

c++ - 使用 CMake 在 Windows (MSVC) 中查找库

我在尝试链接MSVC中的库时遇到问题。我有一些为发布和调试编译的外部依赖项,并将它们设置在不同的文件夹中(${PROJECT_SOURCE_DIR}/External/Debug/lib和${PROJECT_SOURCE_DIR}/External/Release/lib)。我写了一些FindFoo.cmake模块,作为find_library命令的提示,${EXTERNAL_LIB_DIR}根据${CMAKE_BUILD_TYPE}设置。这项工作在Linux上完美,但在Windows上失败(它总是将EXTERNAL_LIB_DIR路径设置为调试路径)并且由于_ITERATOR_DEB

c++ - 为什么相同的 vsnprintf 代码在 Windows (MSVC) 和 Unix (Clang) 上输出不同

在Unix(Clang3.8.1)上,此代码输出:6:328:a8e在Windows(MSVC19.00.24215.1)上,此代码输出:6:123456:a12345e#include#includestaticstd::stringgetFormattedString(constchar*fmt,va_listap){intcount=vsnprintf(NULL,0,fmt,ap)+1;std::cout有趣的是,它们都得到了正确的计数,但在我的Linux和OSX机器上,这段代码输出了错误的结果。这是什么原因造成的?我在某处招致了UB吗? 最佳答案