在Windows上应该如何使用开源库?

有很多可以用Visual Studio编译的开源库。 我将一个程序从Linux移植到Windows,但依赖于一些库。 我不知道Windows上有关库的最佳实践。

在Linux上,这些库通常是发行版的一部分。 例如,要在Debian上使用sqlite ,只需要安装libsqlite3-dev ,包含文件和库(包括静态和dynamic)将自动安装并可用于您的程序。

如果你需要一个不同于你的发行版本的版本,你可以将它编译到你的主目录,安装到~/include~/lib ,并设置适当的环境variables,以便你的编译器在searchpath中包含这些目录。

使用在Windows上作为源分发的库的最佳方法是什么? 如果我dynamic链接,而不是静态链接,是否有一种简单的方法将所需的DLL复制到输出目录,以方便重新分配(假设满足许可证要求)?

Solutions Collecting From Web of "在Windows上应该如何使用开源库?"

选项1 – 具有Windows二进制分发的项目/不在DevStudio中生成。

如OpenSSL。

像OpenSSL这样的项目最好下载到自己的文件夹中,并使用自己的脚本构建。 OpenSSL通常在Windows版本上安装到C:\ OpenSSL上,所以你可以在项目环境中添加C:\ OpenSSL \ include和C:\ OpenSSL \ lib来访问OpenSSL头文件和Lib文件。 实际的dll文件需要从C:\ OpenSSL \ bin复制到您的项目临时文件夹(通常是您的SolutionDir \ Debug或Release)。

一旦你经历了一次构建OpenSSL的麻烦,你就不想再做了。 或者,如果你已经下载了二进制发行版,那么最好是单独发行。 只需向其他人提供您使用的二进制分发文档,以便他们可以适当地设置他们的Visual Studio构建环境。

选项2 – 易于为(或已经拥有)创建Visual Studio项目的小型库。 Lua和sqllite属于这个类别。 对于足够小的项目,简单地将它们添加到子文件夹中的解决方案并不方便。 这样,您可以直接将其输出内置到解决方案输出文件夹中,而且您不必在解决方案中捆绑预构建二进制文件,这样与其他人共享项目变得更加容易。

选项3 – 作为替代,您可以为开源项目的产品创建自己的标准化文件夹。 创建C:\ oss \ include,c:\ oss \ lib,c:\ oss \ bin等,将这些路径添加到DevStudios库并包含路径,将c:\ oss \ bin添加到系统PATH变量中OSS项目,将相应的文件复制到这些位置。

再次,虽然方便,但这个设置使得在第二台个人电脑上复制构建环境变得非常困难,所以您可能还想将整个C:\ oss树保存在源代码管理中。

在Windows上,最简单的方法是构建自己的DLL并将它们包含在程序目录中。

是的,它使用了更多的空间,但HD现在很大,避免了许多不兼容版本(DLL地狱)的麻烦。 对于使用不同的编译器构建的libs版本,Windows也会遭受更多的折皱,所以运送自己的版本是最安全的