(我刚刚编辑了这个问题,以便更具体)
我知道这个问题可能过于笼统,无法回答,但我只是找不到这方面的好教程,所以试图在这里寻求帮助。
我对C++很陌生,以前我的主要编程语言是Java和Python。C++管理第三方库的方式有些混乱,因为me......While Python可以很容易地用pip安装东西,me......While可以导入JAR,C++是如何组织这些事情的?
我想把我的问题分成几部分:以下是我的一些理解和问题:
install时,我们只需将lib的路径添加到某些系统路径。对于IDE,我们只需配置设置,以便它能够解析给定路径中的lib。如果有什么不对的地方就纠正我。.so或.dll,那是什么?有什么区别吗?我看到一些lib说它可以与包含几个头一起使用,但也有一些需要静态链接,这意味着什么?pip将简单地安装到某个全局范围,或者我们使用vitrual来管理它。那么与C++中的pip类似的东西呢?再次为如此笼统和不透明的问题感到抱歉,但我完全迷失了作为C++的新手,这比我以前使用的Python和Java复杂得多……
任何好的教程可能会有很大的帮助,谢谢!
发布于 2018-07-24 05:50:19
C++不是,C++是一种语言,不是一个特定的编译器或实现。
尽管如此,对于大多数编译器来说,构建C++应用程序是分几个步骤完成的:
从技术上讲,C++编译器只涉及步骤2(实际上只是步骤2的一部分)。
很久以前,大多数编译器和链接器允许您将头文件和库文件放在任何地方,然后命令行上传递给编译器和链接器的标志告诉编译器和链接器在哪里找到文件。
对于头文件,(公共)命令行选项-I (大写i)用于添加要搜索的头文件的路径。对于库,选项-L类似地为库添加了链接器要搜索的路径。当然,编译器和链接器中也内置了默认路径,-I和-L选项增加了这些缺省值。
然后,要链接到实际的库,链接器选项-l (小写L)是常用的选项。每个-l选项都列出了一个需要链接到可执行文件中的库。
关于CMake和CLion,CLion IDE根本不链接任何东西。相反,它使用CMake创建一组https://en.wikipedia.org/wiki/Makefile,其中包含用于构建目标的信息。
最后,除了PIP或其他语言包管理器之外,还有一些C和C++选项,但是通常您使用标准方法在系统上安装程序和库。
就像在Windows上一样,您可以找到一个安装程序,然后修改项目设置(使用CMake CMakeLists.txt、原始Makefile或Makefile设置)来添加所需的目录。
对于Linux系统,您可以使用标准的包管理器(比如基于Debian的系统上的apt,或者基于Fedora的系统上的yum等等)。查找和安装库。然后,库及其头文件将安装在默认位置。您仍然需要设置构建环境才能真正链接到库。
发布于 2018-07-24 05:57:19
常见的方法是,您可以将第三方的内容作为.dll,也可以将其直接作为代码(例如boost .您必须加载它并使其工作,您只需包括您想要的部分,对于一些来自boost的部件,您必须使用编译器设置来构建它,并包括.dlls)
像你这样的经理想要的东西,我现在才从VisualStudio和NuGet。我不知道CLion是否有这样的事情。
作为示例,您可以查看opencv中的示例:
对于你的问题:
以下是对.so的回答:What are .a and .so files?
这里是静态和动态库:When to use dynamic vs. static libraries
https://stackoverflow.com/questions/51491200
复制相似问题