为visual studio 2012设置VIPS库

时间:2013-07-27 15:58:24

标签: visual-studio-2012 include-path vips

我正在为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 ++目录 - &gt;将目录包含为vips-dev-7.34.1 \ include(vips-dev-7.34.1是解压缩的文件夹)

添加到VC ++目录 - &gt;库目录为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 \ glib-2.0 \ glib的子文件夹中-objects.h。我搜索了一种方法来使VS搜索主包含文件夹中的所有子文件夹,似乎在VS中不可能进行这种“递归搜索”。必须指向包含头文件的文件夹,我可能需要手动添加所有子文件夹。所以我尝试将vips-dev-7.34.1 \ include \ glib-2.0添加到VC ++目录 - >包含目录。但是后来glib-objects.h调用了另一个glibconfig.h,它在include文件夹和子文件夹中找不到。

有人成功地使用libvips与VS合作吗?如果我错过了什么,你能给我一些建议。

1 个答案:

答案 0 :(得分:1)

我是libvips维护者。抱歉,出于各种原因(见下文),使用VS预构建的libvips二进制文件非常困难。我认为您的选择是使用mingw代替,从linux进行交叉编译(这就是我的工作),或者使用VS从源代码重建libvips(对于经验丰富的开发者来说可能是一周的工作?)。关于此问题有some notes on the vips website

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

不幸的是,VS不再支持针对Windows运行时构建。他们有一个支持这种模式的内部工具,但它不是公开的。我在某处读到你可以哄骗DDK编译器这样做,但它也不支持。

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