[没有] vsnprintf,_vsnprintf是什么意思

问题描述 投票:0回答:1

并且我应该在项目中的所有config.h文件中使用相同的设置吗?

症状:nmake试图在MSVC“命令提示符”处构建项目的一部分时抛出inconsistent dll linkage vsnprintf。谷歌搜索该消息说,通常是因为宏不能始终如一地工作。我正在构建一个可能有效的软件包。我没有更改发行版。

[这两个Microsoft例程记录在here中。 config.h文件中有标志

/* Define to 1 if you have the `vsnprintf' function. */
/* #undef HAVE_VSNPRINTF */
...
/* Define to 1 if you have the `_vsnprintf' function. */
#define HAVE__VSNPRINTF 1

某些但不是全部的config.h文件是在软件包安装时从config.h.in / config.h.in生成的。我在项目的不同子树中的configure.ac中似乎为HAVE_VSNPRINTF设置了不同的设置。我不想覆盖发行版,但这似乎不正确(?)

config.hvsnprintf中,其中MSVCRnnn.DLL是MSVC版本;我已经安装了v12.0 / Update 5 Community。为什么这么旧的版本? ...

背景

我正在尝试构建一个古老版本的Haskell Hugs编译器,2006年9月。这主要是为C / C ++的Unix环境编写的。但是我正在基于Windows 8.1(基于x64的处理器)上构建。我要遵循的指令是nnn;并且该存储库包含了我正在构建的整个目录结构(感谢Franklin Chen)。

我使用MinGW / MSYS而非Cygwin构建了面向Unix的部分。 (64位MinGW运行不正常,因此我还原并使用了32位。)

现在,我正在尝试构建Windows部分,该部分本质上是Unix上的GUI贴面-从说明中的'使用Microsoft Visual C ++开始。 Visual Studio一点都不高兴:项目文件为here,不再受支持。我尝试将.vcproj设置为devenv /Upgrade。但是,随后又出现了一些问题,尝试无法针对.vcxproj进行验证的MSBuild;任一个.xsd都对缺失的类型给出了很多拒绝。所以我放弃了这种方法。

因此,我正在按照'从命令行驱动Microsoft Visual C ++'的说明进行操作,使用MSVC提供的Microsoft.Build.{Core|Common}.xsd文件启动命令行.batas doco'd here正在运行,但会抛出nmake警告堆,仅适用于inconsistent dll。我也得到各种例程的vsnprintf;是敲门错误吗?最终differs in parameter lists崩溃了,没有建立我想要的nmake

c++ msvcrt
1个回答
0
投票

配置脚本的想法是弄清您的编译器是否具有.exe。当然,各种生成的vsnprintf文件会得到不同的结果,这就是重点。如果它们都具有config.h,则无需检查!

话虽如此,我将vsprintf机制描述为肯定古老的。在许多情况下,我发现仅从头开始创建新的configure.ac会更容易。

我不确定您要链接的MSDN文档。您链接到VC14.x文档,该文档指出.vcxproj自VC12.0起已更改,您声称可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.