【问题标题】:How to compile 7zip source code in visual studio 2017?如何在 Visual Studio 2017 中编译 7zip 源代码?
【发布时间】:2019-09-05 14:20:36
【问题描述】:

遵循here 的教程后。我无法使用 lzma1900 SDK 生成可执行文件。

这是 powershell 的输出。

PS C:\Users\testbench\Downloads\7ZipSDK\CPP> "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat
PS C:\Users\testbench\Downloads\7ZipSDK\CPP> nmake NEW_COMPILER=1 
MY_STATIC_LINK=1 Build.mak

Microsoft (R) Program Maintenance Utility Version 14.16.27030.1 Copyright (C) Microsoft Corporation.  All rights reserved.

    if not exist "o" mkdir "o"
    if not exist "o/asm" mkdir "o/asm"
    link  -nologo -OPT:REF -OPT:ICF /LARGEADDRESSAWARE /FIXED:NO -out:o\   
 oleaut32.lib ole32.lib user32.lib advapi32.lib shell32.lib
LINK : fatal error LNK1104: cannot open file 'o\'
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\link.EXE"' 
: return code '0x450'
Stop.

我正在使用这个 nmake 版本和 ml.exe 版本:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86

我还安装了 Windows SDK。为什么当我运行那个 bat 脚本时它没有被加载。?以及如何使用 Visual Studio 2017 编译最新的 lzma SDK

【问题讨论】:

    标签: c++ visual-studio visual-c++ makefile 7zip


    【解决方案1】:

    发布答案以供将来参考,以防有人需要查看:

    7-Zip 的开发者提供了两个源代码。

    1. 7-Zip 应用程序。
    2. (C、C++、C#、java)中的 LZMA 算法实现。

    可以使用内部的makefile为windows生成可执行文件

    7z1900-src/CPP/7zip/makefile.

    我在 2015 年使用了 MSBUILD 命令提示符。(注意:通过运行 vcvarsall.bat 然后执行“nmake”命令来实现此目的的另一种方法

    如果您想了解 7Z 的工作原理,那么“Alone.dsw”就是您要找的。它在里面

    7z1900-src/CPP/7zip/Bundles/Alone/Alone.dsw

    您需要在项目属性中将“调试信息格式”更改为 Program Database /Zi。它在 C/C++ -> General 下。

    希望对你有帮助。

    【讨论】:

    • 尝试使用 VS2019 16.5.0 Preview 5.0 构建它也会导致:1>CVTRES:致命错误 CVT1100:重复资源。类型:MANIFEST,名称:1,语言:0x0409 1>链接:致命错误 LNK1123:转换为 COFF 期间失败:文件无效或损坏
    【解决方案2】:

    在项目 -> 属性 -> 配置属性 -> 清单工具 -> 输入和输出中关闭 嵌入清单 选项。将 Embed Manifest 的值更改为 NoFind more

    【讨论】:

      猜你喜欢
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多