29

有没有人成功地将 libjpeg 包含在某些编译器中?我尝试了一切:Dev C++、VS10、CodeBlocks,手动复制标头和库,使用链接器添加,但没有。现在我真的很困惑,因为没有关于如何在任何编译器中编译它的官方指南。如果有人可以提供有关如何在任何编译器中编译库的教程,我将非常高兴。先感谢您。

4

6 回答 6

46

要在 Visual Studio 2012 中编译libjpeg9,请执行以下步骤(解压缩存档文件后):

  1. 下载该文件WIN32.MAK(例如,从http://www.bvbcode.com/code/f2kivdrh-395674-down下载),并将副本放在源代码根目录中(可能是C:\jpeg-9,但这取决于您解压缩它的位置)。%jpegsrc%从现在开始,我将引用这个目录。拥有这个文件很重要;否则第 3 步将产生错误。

  2. 在 Visual Studio 命令提示符下,打开到%jpegsrc%

    cd %jpegsrc%

  3. 在同一命令提示符下,执行以下命令:

    NMAKE /f makefile.vc setup-v10

    %jpegsrc%这将在:jpeg.sln和中创建两个 Visual Studio 2010 解决方案apps.sln

  4. 在 Visual Studio 2012 中打开每个解决方案。每个解决方案都会提示您将所有项目更新为 2012 格式。点击“更新”。我做了一次,提示没有出现。如果发生这种情况,请在解决方案资源管理器中右键单击jpeg解决方案,然后选择“更新 VC++ 项目...”,这将产生相同的提示。

  5. 正常保存并构建每个解决方案。(您必须先构建jpeg.sln解决方案apps.sln,因为后者取决于前者。)

注意:这个过程在 Visual Studio 2010 中应该可以正常工作,无需更新,但我没有测试过。

更新:此方法在 Visual Studio 2015 中仍然适用于libjpeg-9a.

于 2013-09-27T07:48:00.683 回答
23

以下是我在 Windows 上使用 MinGW 构建 libjpeg 的方式:

1. 使用 MSYS 获取 MinGW

我有一份来自http://sourceforge.net/projects/mingw/的副本。引自 www.mingw.org :

MSYS 是 GNU 实用程序(例如 bash、make、gawk 和 grep)的集合,允许构建依赖于存在的传统 UNIX 工具的应用程序和程序。

我们将需要它来运行configurelibjpeg 源附带的脚本。


2.获取libjpeg源

http://www.ijg.org/获取 Unix 格式包(Windows 不适用于此过程)。我拿了jpeg_8d版本。


3.准备一个构建目录

我已经创建了一个名为tmpin的临时目录D:\,但您可以选择适合您需要的任何目录。重要的是 MSYS 中的路径名称。由于它为 Windows 带来了一些 * Unixity *,因此路径不能以其原始形式使用。简而言之:

C:\path\to\file/c/path/to/file在 MSYS 土地上变成这样, 所以 D:\tmp 变成 /d/tmp.

将 libjpeg 源解压到 中D:\tmp,这样你就有了一个jpeg-8d目录。

在里面创建一个jpeg-build目录D:\tmp,它将保存构建的库。

现在一切都准备好了。


4../配置,制作,制作安装

这就是在 Unix 土地上建设的口头禅。应添加一个选项以将安装过程重定向到D:\tmp\jpeg-build.

在 MSYS shell(在 Windows 开始菜单中也称为 MinGW shell)中运行以下命令:

cd /d/tmp/jpeg-8d
./configure --prefix=/d/tmp/jpeg-build
make
make install

作为附加步骤,您可以make test为安全而奔跑。

这些命令将构建 libjpeg 的静态和共享版本。


5.拿货,删除临时工

如果一切正常,您可以删除该D:\tmp\jpeg-8d目录,但保留该目录jpeg-build。它包含:

  • 一个include目录,包含 libjpeg 头文件。您可以将它们移动到编译器的头文件目录。
  • 一个lib目录,其中.a包含要传递给链接器的文件。您可以将它们移动到编译器的库目录。
  • 一个bin目录,包含 libjpeg 共享库libjpeg-8.dll和 jpeg 工具。
  • 一个share目录,包含manjpeg 工具的页面。

您现在可以通过指示正确的包含和库路径来构建您的程序并将其链接到 libjpeg。


install.txt您可以在源代码包中找到有关 libjpeg 构建和安装过程的许多详细信息。

我希望这会有用。

于 2012-09-29T13:43:50.293 回答
17

用 VS10 构建 jpeg.lib 真的很简单。

首先,下载 zip 格式的 libjpeg 源代码。在我写这篇文章的时候,你可以在这里找到它。

然后将 zip 文件的内容提取到您的磁盘。

然后打开 VS2010 命令提示符 shell(或在任何命令提示符窗口调用 vcvarsall.bat),cd 到 jpeg 源目录(上面引用的下载中的 jpeg-8d)并键入以下内容:

nmake -f makefile.win setup-v10

这将生成两个 VS2010 解决方案,以及一堆项目文件。解决方案是:

  • jpeg.sln, 建立jpeg.lib
  • apps.sln,它构建示例应用程序。

祝你好运!

于 2012-09-29T16:24:22.443 回答
4

如果您碰巧没有安装 Visual Studio 2010,以下是适用于 Visual Studio 2017 的内容:

基本/常用步骤:

  1. 从http://www.ijg.org/ (zip 版本)下载最新版本的 libjpeg并将其解压到一个文件夹中
  2. 打开“VS2017的开发者命令提示符”
  3. 将目录 ( cd) 更改为您提取库源的位置

VS 2017 方法:

  1. 通过运行包括 Windows SDK v7.1A 目录(Win32.Mak 稍后由 nmake 需要):set INCLUDE=%INCLUDE%;c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include

  2. 运行nmake /f makefile.win setup-v15(请注意此处为 VS2017 的 v15)

从这里开始,按照@AthanasiusOfAlex 的说明将 Visual Studio 2010 解决方案升级到您正在运行的 Visual Studio 版本。如果您想要 Debug 配置,请按照 @SteveEng 的说明进行操作。

您可能会遇到的错误:

  • 如果nmake失败并告诉您它不知道如何制作 jconfig.h,请手动将文件重命名jconfig.vcjconfig.h
  • 如果nmake失败并告诉您找不到 Win32.Mak,请手动将其从步骤 #4 中提到的 SDK 目录复制到 libjpeg 源目录。如果您碰巧没有安装该 SDK 版本,请从可信赖的资源下载该文件。
  • 如果nmake失败并告诉您它不知道如何制作,从,等setup-v15开始尝试和错误... 这些是 VS 版本,只要您有任何 VS 2008 之后的版本安装。setup-v10setup-v11

希望这可以帮助人们经历类似的痛苦。

于 2018-05-28T17:45:03.313 回答
2

如果您还想在 MSVC 中使用调试模式。按照 AthanasiusOfAlex 的方法,构建版本,然后:

  1. 右键单击项目并选择最底部的属性
  2. 单击配置管理器,然后在活动解决方案配置下拉列表中选择 -new-
  3. 将名称设置为调试并在下拉列表中选择从发布中复制配置设置,然后单击确定
  4. 关闭对话框,进入常规设置并在目标名称下将广告添加到末尾,如下所示:$(ProjectName)d
  5. 在 Whole Program Optimization 下拉菜单中选择:No Whole Program Optimization
  6. 然后点击左侧配置属性下的C/C++,在Debug Information Format下拉菜单中选择C7 compatible (/Z7)
  7. 在优化下选择禁用并为启用光纤安全优化和整个程序优化选择否
  8. 在预处理器,预处理器定义下,单击编辑并使用以下内容:WIN32 _DEBUG DEBUG _LIB _CRT_SECURE_NO_WARNINGS
  9. 在代码生成下,在运行时库下选择多线程调试 DLL (/MDd)

构建,你就完成了!

于 2016-03-20T20:20:58.823 回答
0

这是针对版本号 16.0 的 VS2019

像这样正确考虑 Visual Studio 版本名称以创建 .sln 文件。

产品名称 代号 版本号

Visual Studio 2019 Dev16 16.0

Visual Studio 2017 Dev15 15.0

Visual Studio 2015 Dev14 14.0

Visual Studio 2013 Dev12 12.0

于 2020-09-16T04:39:27.900 回答