并且我应该在项目中的所有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.h
在vsnprintf
中,其中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
文件启动命令行.bat
。 as doco'd here正在运行,但会抛出nmake
警告堆,仅适用于inconsistent dll
。我也得到各种例程的vsnprintf
;是敲门错误吗?最终differs in parameter lists
崩溃了,没有建立我想要的nmake
。
配置脚本的想法是弄清您的编译器是否具有.exe
。当然,各种生成的vsnprintf
文件会得到不同的结果,这就是重点。如果它们都具有config.h
,则无需检查!
话虽如此,我将vsprintf
机制描述为肯定古老的。在许多情况下,我发现仅从头开始创建新的configure.ac
会更容易。
我不确定您要链接的MSDN文档。您链接到VC14.x文档,该文档指出.vcxproj
自VC12.0起已更改,您声称可以使用。