C++ ';未定义对'的引用;C+中的错误+;尽管函数定义存在于包含路径的头文件中

C++ ';未定义对'的引用;C+中的错误+;尽管函数定义存在于包含路径的头文件中,c++,linker,linker-errors,include-path,unresolved-external,C++,Linker,Linker Errors,Include Path,Unresolved External,如果这是一个天真的问题,请容忍我。我试图看看这是否在其他地方得到了回答,但我没有找到一个问题来回答这个问题 我在编译一些C++代码(test .cp)时看到一个错误。我包括一些标题,如下所示- #include <iostream> #include <string> #include "lefrReader.hpp" 但是,此操作失败,并出现此错误- test.cpp:(.text+0x11): undefined reference to `lefrInit()'

如果这是一个天真的问题,请容忍我。我试图看看这是否在其他地方得到了回答,但我没有找到一个问题来回答这个问题

<>我在编译一些C++代码(test .cp)时看到一个错误。我包括一些标题,如下所示-

#include <iostream>
#include <string>
#include "lefrReader.hpp"
但是,此操作失败,并出现此错误-

test.cpp:(.text+0x11): undefined reference to `lefrInit()'
collect2: ld returned 1 exit status
include(-I)路径中的/foo/bar/include目录不应该有助于查找lefrReader.hpp吗

编辑-我还尝试了以下操作,但无效(来自)-

错误-

test.cpp:(.text+0x11): undefined reference to `lefrInit()'
collect2: ld returned 1 exit status

-l
用于链接库,因此
-llefRreader
查找
lefrReader.a
(静态库)或
lefrReader.so
(共享库)

要链接单个对象文件,只需将该对象文件作为参数

g++ -I/foo/bar/include ./test.cpp /foo/bar/include/lefrReader.o -o ./test
您必须事先编译该文件:

g++ -I/foo/bar/include lefrReader.cpp -c -o lefrReader.o
或者您可以同时编译和链接它们:

g++ -I/foo/bar/include ./test.cpp /foo/bar/include/lefrReader.cpp -o ./test

但是,这意味着您将重新编译这两个
.cpp
文件,即使其中只有一个文件已更改。当您开始处理多个文件时,最好开始使用
makefile
,它可以自动处理所有依赖项。

我不是抱怨它找不到.hpp,而是抱怨函数定义。-我用于编译。未链接。您可能需要使用
lefrReader.o
链接的副本。此答案
g++ -I/foo/bar/include lefrReader.cpp -c -o lefrReader.o
g++ -I/foo/bar/include ./test.cpp /foo/bar/include/lefrReader.cpp -o ./test