编译器找不到头文件中声明的函数
Compiler not finding functions declared in header file
我需要一些帮助来理解为什么这不起作用。我有一个 .h 文件,它声明了一个在 .so 文件中定义的函数:
/* navApi.h */
void navApi_init(); /* resides in libNavApi.so */
和一个.cpp文件:
/* test.cpp */
#include <iostream>
#include "navApi.h"
int main(void)
{
std::cout << "start...n";
navApi_Init();
}
我使用以下方法编译:
g++ test.cpp -navApi
我收到以下错误:
test.cpp: (.txt+0x1e): undefined reference to `navApi_Init()'
collect2: error: ld returned 1 exit status
-- 运行在 Linux、Ubuntu 上 --
这是一个
链接器错误,找不到libnavApi.so
g++ test.cpp -lnavApi
如果libnavApi.so
位于g++
知道的路径中,则可能会起作用。
相关文章:
- C++:为什么允许在另一个函数中声明函数,而不允许在函数定义中声明?
- 在c++中在类外声明函数有什么好处
- 使用 #define 声明函数
- 在静态库中声明函数,在使用该相同库的应用程序中定义它
- 如何强制编译器在 C/C++ 本身中声明函数?
- 如果您只需要在 .h 文件中声明函数.cpp是否需要在 .h 文件中声明函数?
- C++:<sys/sysctl.h> 无法声明函数CTL_HW和HW_NCPU
- 尝试声明函数的局部变量,但得到范围错误
- 如何在C++模板中声明函数
- 如何在另一个文件的类中声明函数
- 使用非类型模板参数正向声明函数模板
- 在此范围错误中未声明函数错误
- 当我们不能声明函数内联(GCC 编译器)时?
- 未在此作用域中声明函数,即使存在头文件也是如此
- 无法声明函数中的模板类型别名
- 单个CPP文件中多次声明函数声明可以吗?
- 编译一个支持VBA中声明函数的dll
- 使用从外部参数包中获取的参数类型声明函数
- 使用类成员正确地声明函数
- 在函数内重新声明函数