如何使用 Visual Studio 2015 rc 编译 7-zip

Posted

技术标签:

【中文标题】如何使用 Visual Studio 2015 rc 编译 7-zip【英文标题】:How to compile 7-zip with visual studio 2015 rc 【发布时间】:2016-09-25 16:37:04 【问题描述】:

我下载了最新的 7-zip 源代码,以便使用 Visual Studio 2015 RC 在本地编译它,但我在编译时收到以下错误消息:

C:\7zip\CPP\7zip\UI\GUI>nmake NEW_COMPILER=1 MY_STATIC_LINK=1

Microsoft (R) Program Maintenance Utility Version 14.00.22816.0
Copyright (C) Microsoft Corporation. Tous droits réservés.

        cl   -DLANG  -DEXTERNAL_CODECS -DWIN_LONG_PATH -DSUPPORT_DEVICE_FILE -D_
7ZIP_LARGE_PAGES -DUNICODE -D_UNICODE -Gr -nologo -c -FoO/ -W4 -WX -EHsc -Gy -GR
- -MT -GS- -Zc:forScope -MP2 -O1 -Yu"StdAfx.h" -FpO/a.pch ../../../Common\Lang.c
pp ../../../Common\Wildcard.cpp
Lang.cpp
Wildcard.cpp
../../../Common\Wildcard.cpp(3): error C2220: avertissement considéré comme une
erreur - aucun fichier 'object' généré
../../../Common\Lang.cpp(3): error C2220: avertissement considéré comme une erre
ur - aucun fichier 'object' généré
../../../Common\Wildcard.cpp(3): warning C4652: option du compilateur 'prise en
charge des vérifications de la sécurité (/GS)' non cohérente avec l'en-tête préc
ompilé ; l'option active de ligne de commande se substituera à celle définie dan
s l'en-tête précompilé
../../../Common\Lang.cpp(3): warning C4652: option du compilateur 'prise en char
ge des vérifications de la sécurité (/GS)' non cohérente avec l'en-tête précompi
lé ; l'option active de ligne de commande se substituera à celle définie dans l'
en-tête précompilé
../../../Common\Wildcard.cpp(3): warning C4651: '/D_DLL' spécifié pour l'en-tête
 précompilé mais non pour la compilation active
../../../Common\Lang.cpp(3): warning C4651: '/D_DLL' spécifié pour l'en-tête pré
compilé mais non pour la compilation active
../../../Common\Lang.cpp(144): warning C4456: la déclaration de 's' masque la dé
claration locale précédente
../../../Common\Lang.cpp(144): note: to simplify migration, consider the tempora
ry use of /Wv:18 flag with the version of the compiler with which you used to bu
ild without warnings
../../../Common\Lang.cpp(123): note: voir la déclaration de 's'
../../../Common\Wildcard.cpp(543): warning C4456: la déclaration de 'front' masq
ue la déclaration locale précédente
../../../Common\Wildcard.cpp(543): note: to simplify migration, consider the tem
porary use of /Wv:18 flag with the version of the compiler with which you used t
o build without warnings
../../../Common\Wildcard.cpp(482): note: voir la déclaration de 'front'
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0
\VC\BIN\cl.EXE"' : code retour '0x2'
Stop.

我按照以下步骤进行编译,但没有成功:http://www.ski-epic.com/2012_compiling_7zip_on_windows_with_visual_studio_10/index.html

主要步骤:

Set up the environment variables using "c:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\vsvars32.bat"
Edit C:\7zsrc\CPP\Build.mak to remove "-OPT:NOWIN98" from line 34
Run C:\7zsrc\CPP\7zip\nmake NEW_COMPILER=1 MY_STATIC_LINK=1

请问这里的问题在哪里?

【问题讨论】:

【参考方案1】:

我按照您在“主要步骤”代码框中概述的 http://www.ski-epic.com/2012_compiling_7zip_on_windows_with_visual_studio_10/index.html 上的说明操作,并且成功了。我注意到这些说明有点过时了,因为源代码现在分布在 .7z 文件中。所以解包不需要“bunzip2”方法。

我所做的(与您所做的)稍有不同的一件事是使用 vsvars32.bat 文件的不同路径。我的系统上安装了多个版本的 Visual Studio Express,最新的是 VS2015 Express。我检查了可能的路径并使用了最新的路径。在我的情况下是:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat"

我注意到 MS PMU 版本比你的稍新:

Microsoft (R) Program Maintenance Utility Version 14.00.23918.0

您可以尝试获取 VS1015 express,(不是 RC 版本)。我知道Visual Studio的最新版本是VS2017(现在已经可用),我还没试过。

关于您发布的错误消息,您似乎对预编译的标头有问题(与某些声明不匹配)并将警告视为错误。这是您第一次尝试编译吗?也许以前的尝试对默认设置进行了一些更改,这些更改现在导致了问题。我建议您删除源文件夹和之前编译尝试产生的任何残留物,然后解压缩源文件的干净副本。

注意:这里有一个相关问题:Cannot compile 7zip under MSVC2012,但它似乎没有解决您的问题。

【讨论】:

以上是关于如何使用 Visual Studio 2015 rc 编译 7-zip的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2015和2017 - 仅使用一个快捷方式应用重命名

visual studio 2015怎么用

如何在 Eclipse 中创建区域,如 Visual Studio

如何利用visual studio2015编写uwp应用

如何在 Visual Studio 2015 中使用 C# 7?

Microsoft Visual Studio C++、OpenCV 动画