C++ C++;包括图书馆
好吧,已经有一段时间了,我对#includes有问题 我在做什么C++ C++;包括图书馆,c++,header,archlinux,C++,Header,Archlinux,好吧,已经有一段时间了,我对#includes有问题 我在做什么 #include "someheader.h" 但它给了我 fatal error: someheader.h: No such file or directory 我想你可以说这是一个全系统的图书馆。 我运行的是ArchLinux,我从repo安装了库,我认为.h文件位于/usr/include中 我可以把所有的头文件复制到我的代码所在的文件夹中,但那是一种黑客行为 “正确”的方法是什么 编辑:我说.h文件在/usr/inc
#include "someheader.h"
但它给了我
fatal error: someheader.h: No such file or directory
我想你可以说这是一个全系统的图书馆。
我运行的是ArchLinux,我从repo安装了库,我认为.h文件位于/usr/include中
我可以把所有的头文件复制到我的代码所在的文件夹中,但那是一种黑客行为
“正确”的方法是什么
编辑:我说.h文件在/usr/include中是不正确的,我的意思是库文件夹在那里
因此,埃米尔·科米尔的回答在一定程度上起了作用。
现在的问题是头文件中有一些include,从我试图访问的方法来看,这些include似乎没有发生
这给了我错误的答案
undefined reference to Namespace::Class::method()
编辑:
那么最后的答案是:
#include <library_name/someheader.h>
对于系统位置中的头文件,可以使用#include
#include“someheader.h”
将尝试将文件someheader.h包含在.c文件的目录中
除了包含头文件外,还需要在库中链接,这是通过-l参数完成的:
g++ -Wall youprogram.cpp -lname_of_library
不这样做是“undefined reference..”链接器错误的原因。快速修复方法是使用:
#include <someheader.h>
#包括
假设someheader.h
位于标准包含位置中(要查找它,请使用命令locate someheader.h
在shell中。如果它在/usr/include
中,则它位于标准位置。如果它位于/usr/include
的子目录中,则只需在\include
指令(例如\include
中添加目录的/usr/include>部分即可。)
然而,这仅仅是故事的一半。您还需要以一种方式设置构建系统,以定位给定库并将其包含路径(其头文件存储的路径)添加到编译器命令(对于gcc
,即-I/path/to/header
)。这样,您也可以通过在生成系统中配置不同的版本来生成。如果库不只是头文件,您还必须将其添加到链接器依赖项中。在生成系统中如何实现这一点,最好通过查阅其文档来了解。有时,库的头文件安装在/u中sr/include/library\u name
,因此您必须包括以下内容:
#include <library_name/someheader.h>
#包括
使用文件管理器(或控制台命令)在系统上定位头文件,并查看是否应在头文件名前加上目录名
您遇到的undefined reference
错误是链接器错误。之所以出现此错误,是因为您没有与程序一起在libsynaptics中链接,因此链接器无法找到您正在使用的libsynaptics函数的“实现”
如果您是使用GCC从命令行进行编译,则必须在libsynaptics库中添加链接的-lsynaptics
选项。如果您使用的是IDE,则必须找到可以指定链接到的库并添加synaptics的位置。如果您使用的是makefile,则必须修改链接器标志列表,以便添加-ls突触学
此外,还需要添加搜索路径的-L
标志,以便链接器可以找到库,除非它安装在一个标准链接器搜索路径中
有关使用GCC链接到库的内容,请参阅。如果替换#包括“someheader.h”,会发生什么情况
与#include
?include是否也会失败?看一看:是的,我知道,但是#include也不起作用,所以我不确定有问题的库是什么?不,那不起作用我试过了,除非我在执行g++code.cpp时出错。它会抛出错误首先验证文件是否存在于/usr/inc中请记住/并且您没有拼写错误。然后将失败的代码复制粘贴到您的问题中,以便我们进行验证。或者列出您安装的软件包的文件。也许它将标题安装在/usr/include或其他位置的子目录中。好了!关于-lname_of_库的部分是关键,还有#include我选择Emile作为标题回答,因为他解决了原来的答案。哈哈,这更像是这样。所以错误消失了,但是我知道我被另一个问题困扰着,我很确定是同样的问题,看我的编辑在这个问题(当我打字它)是的,我得到它,已经有一段时间以来直上C++,谢谢帮助。
#include <library_name/someheader.h>