我正在尝试libvips for visual studio 2012,从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/下载并解压libvip
添加到VC++目录->包含目录作为vips-dev-7.34.1\包含(vips 7.34.1是提取的文件夹)
将VC++目录->库目录添加为vips dev-7.34.1\lib
将系统路径条目添加为vips-dev-7.34.1\bin
基本上是因为没有多少关于在visual中使用libvip的指导,所以我应用了用于OpenCV的过程。指南只说:“你所需要做的就是包含。这将得到你所需要的所有包含”。更重要的是,还有更多。
在构建时,第一个错误是“找不到头文件”glib-object.h,本质上,vips/vips调用glib-objects "include“,它位于include \include\glib-2.0\glib-objects.h的子文件夹中。我搜索了一种使VS搜索主包含文件夹中所有子文件夹的方法,似乎在VS中这种“递归搜索”是不可能的。一个必须准确地指向包含头文件的文件夹,我可能需要手动添加所有的子文件夹。因此,我尝试将vips 7.34.1\Include\glib-2.0添加到VC++目录->Include目录中。但是,glib-objects.h会调用另一个glibconfig.h,它在include文件夹和子文件夹中找不到。
有人成功地让libvip和VS一起工作吗?如果我错过了什么,你能给我一些建议吗?
发布于 2013-08-09 10:00:46
我是libvips的维护者。对不起,由于各种原因,很难在VS中使用预构建的libvips二进制文件(见下文)。我认为您的选择是使用明威,从linux交叉编译(这就是我所做的),或者使用VS从源代码中重新构建libvips (可能需要为有经验的开发人员做一周的工作?)有关于这个问题的重要人物网站上的几点注记。
该网站上的libvips.dll已从linux中交叉编译,使用mingw。它是为带有pkg-config的linux风格的构建系统设置的,因此您将在VS中找到许多编译器标志,并且它是针对msvcrt.dll ( Windows运行时)而不是针对VS运行时( msvcrtXX.dll )构建的,因此除非您也针对Windows运行时进行构建,否则您将遇到无尽的恼人的兼容性问题。
不幸的是,VS不再支持针对Windows运行时进行构建。他们有一个支持这种模式的内部工具,但它不是公开的。我在某个地方读到过,您可以诱使DDK编译器这样做,但它也不受支持。
CoApp是一个有趣的项目(部分由微软支持),它试图减少在Windows上构建软件的痛苦,但它仍然处于测试阶段。您可能会问他们是否有一个libvip打包用于VS,或者正在考虑制作一个。
https://stackoverflow.com/questions/17899703
复制相似问题