Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows上使用开源库?_Windows_Visual Studio_Open Source_Cross Platform - Fatal编程技术网

如何在Windows上使用开源库?

如何在Windows上使用开源库?,windows,visual-studio,open-source,cross-platform,Windows,Visual Studio,Open Source,Cross Platform,有许多开源库可以用VisualStudio编译。我正在将一个程序从Linux移植到Windows,但它取决于许多库。我不知道Windows上关于库的最佳实践是什么 在Linux上,这些库通常是发行版的一部分。例如,要在Debian上使用,您只需安装,并且include文件和库(静态和动态)将自动安装并可供您的程序使用 如果您需要与发行版不同的版本,您可以在主目录中编译它,将其安装到~/include和~/lib,并设置相应的版本,以便编译器在其搜索路径中包含这些目录 使用Windows上作为源代

有许多开源库可以用VisualStudio编译。我正在将一个程序从Linux移植到Windows,但它取决于许多库。我不知道Windows上关于库的最佳实践是什么

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

如果您需要与发行版不同的版本,您可以在主目录中编译它,将其安装到
~/include
~/lib
,并设置相应的版本,以便编译器在其搜索路径中包含这些目录


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

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


是的,它使用了更多的空间,但是HD现在很大,并且避免了不兼容版本(DLL地狱)带来的很多麻烦。Windows在使用不同编译器构建的libs版本中也会遇到一些问题,因此,发布自己的版本是最安全的

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

例如OpenSSL

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

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

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

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


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

但是您将库源放在哪里?您是单独编译它们,还是与程序一起编译?将库源代码解包到您的开发人员机器上的任何位置,使用不带空格的dir通常比在程序文件中更容易。我使用了库的c:\soft\name\u,但这并不重要。在他们的dirI中构建它们我希望有一种出色的或至少是标准化的方式来做事情,但这似乎涵盖了所有的可能性。Windows环境与Unix最接近的模拟是仅二进制的WinSxS文件夹,这将是一种完全难以置信的方式来分发正式的、签名的但二进制的,以允许多个不同版本并存的方式构建库,应用程序(和开发人员)可以选择适合其需要的版本。但是,不幸的是,似乎没有任何OSS项目设置为(a)为windows进行二进制构建,(b)获取对其输出进行数字签名以包含WinSxS所需的证书,(c)执行此操作。