编译器没有找到头文件中声明的函数

时间:2016-02-18 18:30:17

标签: c++ compiler-errors shared-libraries .so

我需要一些帮助来理解为什么这不起作用。我有一个.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 -

1 个答案:

答案 0 :(得分:1)

这是一个链接器错误,没有找到libnavApi.so

g++ test.cpp -lnavApi
如果libnavApi.so位于g++知道的路径中,

可能有效。