C++ 将共享库文件放入C++;项目

C++ 将共享库文件放入C++;项目,c++,shared-libraries,C++,Shared Libraries,我想在我的C++项目中使用.so库。我有它的头文件和实际的。所以也必须在某个地方;我安装了apt-get 由于我的项目处于版本管理之下,我不希望下载存储库的每个人都必须安装我安装的软件包,因此我只想将.so文件和头文件放在我的项目中的某个位置,并且只使用它们。从来没有正确地学习C++,我不知道我该怎么做。 如果我有一个.so库和它的头文件,如何将它们放在我选择的文件夹中并包含在源代码中?您有几个选项: 您使用库的静态版本进行构建,这样就不会有这样的问题 您告诉用户安装库 您可以手动加载库,这样

我想在我的C++项目中使用.so库。我有它的头文件和实际的。所以也必须在某个地方;我安装了apt-get

由于我的项目处于版本管理之下,我不希望下载存储库的每个人都必须安装我安装的软件包,因此我只想将.so文件和头文件放在我的项目中的某个位置,并且只使用它们。从来没有正确地学习C++,我不知道我该怎么做。
如果我有一个.so库和它的头文件,如何将它们放在我选择的文件夹中并包含在源代码中?

您有几个选项:

  • 您使用库的静态版本进行构建,这样就不会有这样的问题
  • 您告诉用户安装库
  • 您可以手动加载库,这样您就有了自己的搜索路径(通常是当前文件夹)

最后一个解决方案与您想要的最匹配,放置可能很难设置。还有几个库可以轻松加载.so文件。

您有几个选项:

  • 您使用库的静态版本进行构建,这样就不会有这样的问题
  • 您告诉用户安装库
  • 您可以手动加载库,这样您就有了自己的搜索路径(通常是当前文件夹)

最后一个解决方案与您想要的最匹配,放置可能很难设置。还有几个库可以轻松加载.so文件。

您有几个选项:

  • 您使用库的静态版本进行构建,这样就不会有这样的问题
  • 您告诉用户安装库
  • 您可以手动加载库,这样您就有了自己的搜索路径(通常是当前文件夹)

最后一个解决方案与您想要的最匹配,放置可能很难设置。还有几个库可以轻松加载.so文件。

您有几个选项:

  • 您使用库的静态版本进行构建,这样就不会有这样的问题
  • 您告诉用户安装库
  • 您可以手动加载库,这样您就有了自己的搜索路径(通常是当前文件夹)

最后一个解决方案与您想要的最匹配,放置可能很难设置。还有几个库可以轻松加载.so文件。

我的建议是:不要。相反,告诉用户,如果他们想从源代码构建项目,他们需要这个库和那个库。然后,对于二进制文件的发布,您构建静态可执行文件,该文件静态链接到库。相反,告诉用户,如果他们想从源代码构建项目,他们需要这个库和那个库。然后,对于二进制文件的发布,您构建静态可执行文件,该文件静态链接到库。相反,告诉用户,如果他们想从源代码构建项目,他们需要这个库和那个库。然后,对于二进制文件的发布,您构建静态可执行文件,该文件静态链接到库。相反,告诉用户,如果他们想从源代码构建项目,他们需要这个库和那个库。然后,对于二进制文件的发布,您构建静态可执行文件,该文件与库静态链接。嗯,没有一个文件看起来像我预期的那样简单。为什么这不是一般的做法?因为它主要是高度不可移植的。但这也是因为UNIX(以及类似UNIX的系统)更喜欢共享对象而不是系统范围的对象。因此被命名为“共享对象”。它不像Windows那样被简单地称为动态链接库。大多数应用程序都是使用软件包安装的,因此所有依赖项都是自动管理的。此外,这可以很容易地在大型应用程序中使用上一个解决方案来完成,它们中没有一个像我期望的那样简单。为什么这不是一般的做法?因为它主要是高度不可移植的。但这也是因为UNIX(以及类似UNIX的系统)更喜欢共享对象而不是系统范围的对象。因此被命名为“共享对象”。它不像Windows那样被简单地称为动态链接库。大多数应用程序都是使用软件包安装的,因此所有依赖项都是自动管理的。此外,这可以很容易地在大型应用程序中使用上一个解决方案来完成,它们中没有一个像我期望的那样简单。为什么这不是一般的做法?因为它主要是高度不可移植的。但这也是因为UNIX(以及类似UNIX的系统)更喜欢共享对象而不是系统范围的对象。因此被命名为“共享对象”。它不像Windows那样被简单地称为动态链接库。大多数应用程序都是使用软件包安装的,因此所有依赖项都是自动管理的。此外,这可以很容易地在大型应用程序中使用上一个解决方案来完成,它们中没有一个像我期望的那样简单。为什么这不是一般的做法?因为它主要是高度不可移植的。但这也是因为UNIX(以及类似UNIX的系统)更喜欢共享对象而不是系统范围的对象。因此被命名为“共享对象”。它不像Windows那样被简单地称为动态链接库。大多数应用程序都是使用软件包安装的,因此所有依赖项都是自动管理的。此外,使用我给出的上一个解决方案,在大型应用程序中也可以轻松实现这一点