【发布时间】:2010-12-31 00:19:10
【问题描述】:
我正在尝试在我的 VC++ 项目中使用一些开源库,例如 libpng。我在 Linux 环境中使用它们没有问题,但我对如何让它们在 VC++ 环境中工作一无所知。这是我尝试过的:
我从 SF 安装了 libpng for Win32 包(顺便说一句,我也安装了 zlib)。我可以在 Program Files\GnuWin32\include 中看到 png.h,但是当我包含它时,编译器说它需要 unistd.h。我知道这是 POSIX 系统调用的标头,所以 Windows 不会有它。
我安装了 Cygwin,但后来意识到它只适用于使用 gcc 在 Windows 上构建 linux 源代码,而不是使用 MS VC(或者我错了吗?)
我安装了 MinGW,但似乎 MinGW 也是为使用 gcc 而设计的(或者我错了吗?)。 MinGW 确实带有 unistd.h,但是这个头文件引用了来自 linux 的 MinGW 的 sys/types.h,而 MSVC 有自己不同的 sys/types.h,所以编译器不知道使用哪个。这两个文件定义了不同的东西,都不能同时涵盖两者,因此包括任何一个都不足以编译整个项目。
到目前为止,这似乎是一个非常愚蠢的#include 问题,但我就是想不出正确的方法。我真的是一个跨平台的菜鸟。也许我从一开始就走错了路……
那我应该怎么做呢?您在 VC++ 中使用 linux 库的标准方式是什么?
顺便说一句,我可以使用 MinGW 或 Cygwin 使用 gcc 构建 Windows 可执行文件,但由于我现有的代码库,我更喜欢能够使用 VC++ 构建。感谢您的帮助!
【问题讨论】:
标签: linux visual-c++ png cygwin mingw