我正在为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合作吗?如果我错过了什么,你能给我一些建议。
答案 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,或者正在考虑制作一个。