草庐IT

MSVC_VERSION

全部标签

c++ - 替换 msvc 上的 vsscanf

我在将代码库从linux(gcc)移植到windows(msvc)时遇到了问题。似乎C99函数vsscanf不可用并且没有明显的替代品。我读过有关使用内部函数_input_l并静态链接到crt运行时的解决方案,但不幸的是我无法静态链接,因为它会混淆应用程序加载的所有插件(作为dll)。那么是否有任何替代品或为vsscanf编写包装器的方法?2016-02-24更新:当第一次询问时没有本地替代品,但从那时起MSVC已经实现了对此的支持以及更多。VS2013并稍后实现vsscanf和friend。C++11也包括支持。 最佳答案 一个应

c++ - 版本控制 : multiple version hell, 文件同步

我想知道您通常如何处理这种情况:我有一组实用函数。说..5..10个文件。从技术上讲,它们是静态库、跨平台-SConscript/SConstruct加上VisualStudio项目(不是解决方案)。这些实用函数用于多个小项目(15个以上,数量随着时间的推移而增加)。每个项目都有几个文件或整个库的拷贝,而不是指向一个中心位置的链接。有时项目使用一个文件,两个文件,有些使用一切。通常,实用函数作为每个文件和SConscript/SConstruct或VisualStudio项目(视情况而定)的拷贝包含在内。每个项目都有一个单独的git存储库。有时一个项目源自其他项目,有时则不然。您以随机

c++ - 是否可以将 gcc 编译库与 MSVC 一起使用?

我有一个项目依赖于libiconv进行多项操作。我在VisualStudio2008中使用iconv.lib的预编译二进制文件,但现在我不得不转向VisualStudio2010,并且没有更多的预编译二进制文件可用。我决定自己编译它,但正如libiconv文档所述,没有对MSVC编译器的官方支持。但是,我在某处读到gcc可以生成与MSVC编译器二进制兼容的静态库,只要二进制接口(interface)保留在C中即可。虽然这听起来很疯狂,但我试了一下,实际上几乎成功了。我编译了它,将libiconv.a重命名为iconv.lib并尝试与它链接。(如果这是个坏主意,请告诉我)。首先遇到链接错

c++ - msvc2010 - 如何建立一个干净的输出目录?

我在使用visualstudio2010时遇到问题,因为它现在在构建时使我的输出目录充满.pdb和其他文件。在以前版本的msvc中,我将中间目录设置为输出目录以外的其他目录,并在那里生成了.pdb文件(以及其他所有内容):$(IntDir)/$(ProjectName).pdb说。现在,在新版本的msvc中,它似乎仍然在那里构建.pdb,但出于某种我不知道的原因,还在我的输出目录中放置了一个.pdb文件(我不想要)。如果我设置增量链接,.ilk文件似乎也会发生同样的事情,但这不太重要,因为我可以禁用增量链接,但.pdb对于调试程序是必不可少的。我认为这是msvc中的一个错误,但我只在c

c++ - 如何为 C++ (MSVC 2008) 解决方案创建语言附属 DLL?

我们最终要本地化我们的应用程序,需要为字符串表创建附属DLL(从源代码中取出硬编码字符串需要一个月的时间)。我一直在查看MSDN和其他帮助,但我对实际构建语言DLL的机制感到很困惑。我们在EXE本身中有英文资源。根据我的理解,我们现在需要创建名为MyAPPXXX.dll的DLL项目。我不确定我们应该怎么做。是否只有一个资源/rc文件和文件中的不同部分,或者是否为每种语言复制了rc文件并替换了翻译?我在尝试按照我在其他地方看到的有关如何执行此操作的说明时迷路了。是否每种语言都需要一个DLL,或者我们是否有具有多种配置的同一个项目-如果是后者,如何完成?这是我读过的有关此内容的页面列表-但

c++ - 如何将更新的 git-hash 嵌入到 Version.hpp 中?

原标题:如何让git忽略我的文件而不考虑分支?我有以下按预期工作的checkout后文件:#!/usr/bin/rubycmd=ENV["HOME"]+"/dev/pitbull/cpp/bin/gen_version.rb--write"`#{cmd}`gen_version.rb脚本计算出时间戳、最后一个主标记和HEADgit哈希并写入同样在git中的VERSION.hpp文件。然后我使用usegitupdate-index--assume-unchangedVERSION.hpp让git忽略我的更改。现在,如果我留在我的开发分支上,这会很好用。但是当我尝试getcheckoutm

c++ - 使用 MSVC 编译的多线程应用程序在运行时失败

我已经实现了一个循环运行提供的函数的类。//Timer.h#include#include#includeclassTimer{public:Timer(conststd::chrono::millisecondsperiod,conststd::function&handler);~Timer();voidStart();voidStop();boolIsRunning()const;private:conststd::function&handler;conststd::chrono::millisecondsperiod;boolisRunning=false;mutablest

c++ - 这是 MSVC 中依赖名称解析的错误吗?

关于cppreference.com,以下代码作为解释相关名称解析的示例提供:#includevoidg(double){std::coutstructS{voidf()const{g(1);//"g"isanon-dependentname,boundnow}};voidg(int){std::couts;s.f();//callsg(double)}当前版本的VisualC++(19.0.23918.0)产生以下输出:g(int)g(int)这是标准允许的,还是MSVC中的错误? 最佳答案 “从属名称解析”在这里具有误导性。g是

c++ - 处理 MSVC 宏中的额外括号

在某些情况下,您需要(a)有一个宏,(b)在(c)语言不允许括号的情况下将其参数之一括起来。简单的例子:#defineMAKE_STRUCT(name,base)structname:base{}structX{};MAKE_STRUCT(Y,X);//okMAKE_STRUCT(Z,(X));//error这是一个错误,因为我们需要一个类型名称并且我们得到了(。ecatmur通过利用有other允许使用额外括号的部分语言:templatestructargument_type;templatestructargument_type{typedefUtype;};#defineMAKE

c++ - MSVC9.0 bug 或对虚拟继承的误解和 friend ?

考虑以下代码:classA{friendclassB;friendclassC;};classB:virtualprivateA{};classC:privateB{};intmain(){Cx;//OKdefaultconstructorgeneratedbycompilerCy=x;//compilererror:copy-constructorunavailableinCy=x;//compilererror:assignmentoperatorunavailableinC}MSVC9.0(VisualStudio2008的C++编译器)确实会生成默认构造函数,但无法为C生成复制