有许多可以使用Visual Studio编译的开源库。我正在将程序从Linux移植到Windows,但它依赖于许多库。我不知道有关库的最佳实践是什么。
在Linux上,这些库通常是发行版的一部分。例如,要在Debian上使用sqlite,您只需要安装libsqlite3-dev
,并且包含文件和库(包括静态和动态)会自动安装并可供您的程序使用。
如果您需要的版本与您的发行耗材不同,可以在主目录中编译它,将其安装到~/include
和~/lib
,然后设置相应的environment variables以便您的编译器在其搜索路径中包含这些目录。
使用在Windows上作为源分发的库的最佳方法是什么?如果我动态链接而不是静态链接,是否有一种简单的方法可以将所需的DLL复制到输出目录中以简化重新分配(假设满足许可证要求)?
答案 0 :(得分:1)
在Windows上,最简单的方法是构建自己的DLL并将它们包含在程序目录中。
是的它使用了更多的空间,但是这些天HD很大并且避免了许多不兼容版本(DLL地狱)的麻烦。 Windows使用不同的编译器构建的lib版本也会有一些皱纹,所以运送你自己的版本是最安全的
答案 1 :(得分:1)
选项1 - 具有Windows二进制分发的项目/不在DevStudio中构建。
E.g。 OpenSSL的。
OpenSSL等项目最好下载到自己的文件夹中,并使用自己的脚本构建。 OpenSSL通常在Windows构建中安装到C:\ OpenSSL,所以一旦完成,您可以将C:\ OpenSSL \ include和C:\ OpenSSL \ lib添加到您的项目环境中以访问OpenSSL头和Libs。您需要将实际的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 lib并包含路径,将c:\ oss \ bin添加到系统PATH变量中,同时构建每个路径OSS项目,将相应的文件复制到这些位置。
同样,虽然方便,但这种设置使得难以在第二台PC上复制构建环境,因此您可能希望将整个C:\ oss树保留在源代码管理中。