草庐IT

c++ - 在 windows 上编译 MSVC 是绝对必要的吗?

一些开源项目明确声明,为了在Windows上编译,他们需要一个微软编译器(通常还需要一个特定版本,因为后面的版本不兼容或将拒绝编译旧代码)。因为这对我来说似乎很荒谬,因为有可以为windows编译的foss编译器,任何基本任务都需要Microsoft编译器,我是假设这是因为这些项目使用api调用库(例如msvcrt*.dll),出于某种原因,mingw-gcc、clang和其他windows编译器端口无法编译。我对这些要求的理解很肤浅,因为我对编译代码的经验主要来自Linux,这让我很担心,因为获得Microsoft编译器并非易事。获得它们的唯一方法是通过Microsoft的visua

c++ - MSVC6 : Breakpoint stops program

使用MicrosoftVisualStudio98、MicrosoftVisualC++6.0SP6在调试器下运行时,只有一个问题。如果我暂停程序并继续,一切都很好。问题是什么?当我遇到断点时,我的程序停止了。但不是很好;执行停止,我从Debug模式进入编辑模式。在遇到断点之前一切都很好。我知道它到达了断点-我看到黄色小箭头闪烁,指向正确的代码行,检查窗口中的局部变量和该窗口中的调用堆栈。然后我就盯着编辑看。这发生在所有项目中。我已经卸载并重新安装了MSVC6。它没有帮助。我即将在一台新电脑上重新开始;在我走那么远之前,有人知道我对这个做了什么吗?注:MSVC6不是我的选择,但有其原因

windows - 为什么 QtCreator/MSVC 将 64 位系统 DLL 链接到我的 32 位应用程序?

更新:这基本上都是假的。事实证明,运行应用程序的计算机上的Depends.exe版本是32位版本。修复该问题后,两台机器都将系统DLL显示为64位,因此这不是问题的根源。不确定为什么depends在32位exe中以这种方式显示它们。进一步更新:最终问题是一个64位DLL。使用正确版本的DependencyWalker后更容易找到它。选择32位还是64位版本并不是基于您运行的平台。来自FAQ:DependencyWalkerwillworkwithany32-bitor64-bitWindowsmodule.Thereare32-bitand64-bitversionsDependenc

windows - C++/msvc6 应用程序由于堆损坏而崩溃,有什么提示吗?

关于申请它在WindowsXPProfessionalSP2上运行。它是用带有ServicePack6的MicrosoftVisualC++6.0构建的。它是基于MFC的。它使用多个外部dll(例如Xerces、ZLib或ACE)。它具有高性能要求。它执行大量网络和硬盘I/O,但它也是CPU密集型的。它有一个异常处理机制,在发生未处理的异常时生成一个小型转储。更新:这是一个高度多线程的应用程序,我们正在使用互斥锁来保护并发访问(当然,我们可能会在某些地方失败...)坠机事实它只发生在多处理器/多核机器和繁重的工作负载下。它在运行几个小时后随机发生(我们和我们的客户都还没有找到模式)。我

c++ - 如何在 Windows 上用 Vim 运行 “:compiler msvc” 和 “:comp msbuild”?

我有VSExpress(2012)桌面版。我是否也获得了NMAKE.EXE程序?http://msdn.microsoft.com/en-us/library/dd9y37ha.aspx-TheMicrosoftProgramMaintenanceUtility(NMAKE.EXE)isatoolthatbuildsprojectsbasedoncommandscontainedinadescriptionfile.当我在运行:compilermsvc之后运行:make时,shell返回消息“'nmake'isnotrecognized作为内部或外部命令,”。如何使用这些命令编译C++

c++ - 使用非 MSVC 编译器在 Windows 下打开带有 Unicode 文件名的文件的 fstream

当文件名为“Unicode”文件名时,我需要将文件打开为std::fstream(或实际上任何其他std::ostream)。在MSVC下我有非标准扩展std::fstream::open(wchar_tconst*,...)?我可以使用GCC(最重要的)和Borland编译器等其他编译器做什么。我知道CRTL提供了_wfopen但它提供了CFILE*接口(interface)而不是io-streams,也许有一种非标准的方式来创建io-stream文件*?是否有任何boost::ifstream带有类似MSVC的Windows扩展? 最佳答案

c - MSVC 的时间函数是线程安全的吗?

对于Linux,对于时间函数,我们有一个_r版本例如:localtime有localtime_r,但在Windows中我找不到一些这样的函数。Windows时间函数本质上是线程安全的吗? 最佳答案 使用MicrosoftVisualStudio,您可以选择要使用的c运行时:通常它们是:静态单线程库(libc)静态多线程库(libcmt)动态多线程库(msvcrt)多线程库是线程安全的。单线程库最后出现在MSVC2005中,已从MSVC2008中删除。dll运行时(msvcrt.dll)必须是线程安全的——因为实现是在一个dll中,因

c - Cygwin 的 GCC 与 Windows 上的 MSVC 编译器之间是否存在任何性能问题?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。大多数人在Linux上使用gcc,在Windows上使用MSVC编译器。我最近在我的Windows机器上安装了Cygwin的GCC编译器并正在使用它。我只是好奇它们之间是否存在任何性能差异?我的意思是GCC不能直接安装在Windows上,所以Cygwin包在Windows上创建了一些类似Linux的环境,然后GCC将使用它。那有什么缺点吗?Linux上的

c++ - 为什么 MSVC 编译这个模板函数失败?

我在将一些代码移植到MSVC时遇到了问题,这让我很困惑。据我所知,代码应该是合法的,Clang编译就好了。我已将范围缩小到以下几点:enumE{x};templatestructtraits{staticconstEval=x;};templatestructS{S(){};};templateS::val>foo(Tt);intmain(){charc=0;foo(c);}请注意,编译后,代码预计会产生链接器错误(我剥离了函数foo的定义以保持示例最小),但它应该据我所知,编译干净。但是,MSVC给了我这个错误:errorC2893:Failedtospecializefunctio

c++ - 为什么 MSVC 在寄存器中返回一个小结构时不必要地使用堆栈?

我在MSVC2013,x64,Releasebuildwith/02上编译了以下代码:structPoint{intx;inty;};PointxUnit(){Pointp;p.x=1;p.y=0;returnp;}xUnit()生成的汇编代码为:movQWORDPTRp$[rsp],1movrax,QWORDPTRp$[rsp]ret0为什么它写入堆栈然后立即读回rax返回?我早就料到了:movrax,1ret0 最佳答案 X86版本似乎表现不错(即生成“moveax,1”)。我的猜测是X86和X64版本是独立的代码库,在一个目标