c++ - 如何在Visual Studio 2017中编译7zip源代码?

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

遵循 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脚本时它没有被加载?以及如何编译最新的lzma SDK 使用 Visual Studio 2017?

最佳答案

发布答案以供将来引用,以防有人需要查看它:

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

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

可以使用位于内部的 makefile 生成 Windows 的可执行文件

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

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

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

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

您需要将项目属性中的“调试信息格式”更改为“程序数据库/Zi”。它位于 C/C++ -> 常规下。

希望对您有所帮助。

关于c++ - 如何在Visual Studio 2017中编译7zip源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55691927/

相关文章:

c++ - 源代码在 C++ 中调用了错误的模板类函数,如何解决?

c# - 在解决方案资源管理器中隐藏类 View

c++ - 使用 'delete' 运算符清理内存时出现“调试断言失败”错误

c++ - 使用 MS VC++ 2008 构建的 HDF5 和使用 MS VC++ 2010 + boost 1.45.0 构建的应用程序中的 boost 1.39.0 库

c++ - osg::GraphicsContext::WindowingSystemInterface 返回 null

c++ - 为什么我的 double 或 int 值在除法后总是 0?

visual-studio-2010 - 使用 ASP.NET 开发服务器设置 MIME 类型

c# - 无法在 Visual Studio 2019 16.2 中加载文件或程序集 Microsoft.VisualStudio.Coverage.Analysis

c++ - 代码因未初始化的变量而崩溃,即使我实际上并没有使用它

c++ - 当 T 是 std::pair<std::hash 也支持的两种更简单的类型> 时,std::hash<T> 应该工作吗?