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

标签 windows visual-studio open-source cross-platform

有许多可以使用 Visual Studio 编译的开源库。我正在将一个程序从 Linux 移植到 Windows,但它依赖于许多库。我不知道 Windows 上有关库的最佳做法是什么。

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

如果你需要一个不同于你的发行版的版本,你可以在你的主目录中编译它,将它安装到 ~/include~/lib,然后设置合适的environment variables以便您的编译器在其搜索路径中包含这些目录。

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

最佳答案

选项 1 - 具有 Windows 二进制分发版的项目/不在 DevStudio 中构建。

例如OpenSSL。

像 OpenSSL 这样的项目最好下载到它们自己的文件夹中,并使用它们自己的脚本构建。 OpenSSL 通常会在 Windows 构建中将自身安装到 C:\OpenSSL,所以一旦完成,您可以将 C:\OpenSSL\include 和 C:\OpenSSL\lib 添加到您的项目环境以访问 OpenSSL header 和库。您需要从 C:\OpenSSL\bin 复制到您的项目暂存文件夹(通常是您的 SolutionDir\Debug 或 Release)的实际 dll 文件。

一旦经历过一次构建 OpenSSL 的麻烦,您就不想再做一次。或者,如果您已经下载了二进制分发版,最好不要管它。只需向其他人记录您使用的二进制分发版,以便他们可以适本地设置他们的 Visual Studio 构建环境。

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

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

同样,虽然方便,但此设置很难在第二台 PC 上复制构建环境,因此您可能还希望在源代码管理中保留整个 C:\oss 树。

关于windows - 应该如何在 Windows 上使用开源库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709300/

相关文章:

python-3.x - 为什么 Qt 中的字体显得模糊或像素化?

asp.net-mvc - 将 Visual Studio 项目转换为 ASP.NET MVC

r - 向 R 核心团队提出功能请求

security - 有没有类似于 Fortify 的开源软件?

python - 如何在 Python (2.7) 中运行自动热键脚本

windows - 我可以在 Windows 上使用 std::thread 吗?

Android Studio 代码建议不适用于 Flutter

c# - 关闭应用程序后,VS 继续调试 session 意味着内存泄漏?

php - 开源软件支付网关 (Dopays.com) 配置错误

windows - Windows 8.1+ IE 11 中的 Web 套接字客户端连接问题 + 不允许环回