1

我正在为 Visual Studio 2012 尝试 libvips,从 http://www.vips.ecs.soton.ac.uk/supported/current/doc/html/vipsmanual/vipsmanualse1.html#x6-60001.1.1的一个简单示例开始

#include <iostream>  
#include <vips/vips>  

int  
main (int argc, char ⋆⋆argv)  
{  
  if (argc != 3)  
    {  
      std::cerr << "usage: " << argv[0] << " infile outfile\n";  
      return (1);  
    }  

  try  
  {  
    vips::VImage fred (argv[1]);  

    fred.invert ().write (argv[2]);  
  }  
  catch (vips::VError e)  
  {  
    e.perror (argv[0]);  
  }  

  return (0);  
}

我所做的是:

在http://www.vips.ecs.soton.ac.uk/supported/7.34/win32/下载并解压 libvips

添加到 VC++ 目录 -> 将目录包含为 vips-dev-7.34.1\include (vips-dev-7.34.1 是提取的文件夹)

添加到 VC++ 目录->库目录为 vips-dev-7.34.1\lib

添加系统路径条目为 vips-dev-7.34.1\bin

基本上是因为没有太多关于在 Visual Studio 中使用 libvips 的指南,所以我应用了我用于 OpenCV 的程序。该指南只说“您需要做的就是包含。这将获得您需要的所有包含”。显然还有更多。

在构建时,第一个错误是“无法找到头文件“glib-object.h”。本质上,vips/vips 调用 glib-objects “include,它位于 include \include\glib-2.0\glib-objects 的子文件夹中。 H。我搜索了一种让 VS 搜索主包含文件夹中的所有子文件夹的方法,似乎在 VS 中这种“递归搜索”是不可能的。必须准确指向包含头文件的文件夹,我可能需要手动添加所有子文件夹。所以我尝试将 vips-dev-7.34.1\include\glib-2.0 添加到 VC++ 目录->包含目录。但随后 glib-objects.h 调用了另一个 glibconfig.h,在包含文件夹和子文件夹中找不到该文件。

有人成功让 libvips 与 VS 一起工作吗?如果我错过了什么,你能给我一些建议吗?

4

1 回答 1

1

我是 libvips 的维护者。抱歉,由于各种原因,很难将预构建的 libvips 二进制文件与 VS 一起使用(见下文)。我认为您的选择是改用mingw,从 linux 进行交叉编译(这就是我所做的),或者使用 VS 从源代码自己重建 libvips(对于有经验的开发人员来说可能需要一周的工作?)。vips网站上有一些关于这个问题的注释。

网站上的 libvips.dll 是使用 mingw 从 linux 交叉编译的。它是为带有 pkg​​-config 的 linux 风格的构建系统设置的,因此您将在 VS 中找出很多编译器标志,并且它是针对 Windows C 运行时 msvcrt.dll 而不是 msvcrtXX.dll 构建的VS 运行时,因此除非您还针对 Windows 运行时进行构建,否则您将面临无穷无尽的恼人兼容性问题。

不幸的是,VS 不再支持针对 Windows 运行时进行构建。他们有一个支持这种模式的内部工具,但它不是公开的。我在某处读到您可以诱使 DDK 编译器执行此操作,但也不支持它。

CoApp是一个有趣的项目(部分由微软支持),它试图减少在 Windows 上构建软件的痛苦,但它仍处于测试阶段。您可能会问他们是否为 VS 打包了一个 libvips,或者正在考虑制作一个。

于 2013-08-09T10:00:46.707 回答