C ++-对PCM :: getInstance()的问题未定义引用

时间:2018-09-19 06:36:31

标签: c++ compiler-errors linker g++ compiler-warnings

在我问一个新问题之前,我已经读过很少或更多的问题,但是我一直感到困惑。

我使用以下命令编译程序:

  

g ++ -std = c ++ 11 -Wall -O3 -fopenmp main.cpp -o main -D WITH_COUNTER -I / usr / local / src / pcm -L / usr / local / src / pcm -L / usr / local / lib

然后,我发现了错误:

  

main.cpp :(。text.startup + 0x27e):对PCM :: getInstance()的未定义引用

     

main.cpp :(。text.startup + 0x289):未定义对PCM :: resetPMU()的引用

     

main.cpp :(。text.startup + 0x310):对PCM :: program(PCM :: ProgramMode,void const *)的未定义引用

那么,有人可以向我解释如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您实际上并没有链接到库本身。

-L选项告诉链接器将目录添加到其搜索路径,但是链接器不会遍历其路径中的所有库来查找哪个可能是正确的(可能有数百个甚至数千个)

相反,您需要使用-l(小写L)选项来明确指定要链接的库。

对于某些示例库foo,将存在一个名为libfoo.alibfoo.so的文件。要与其链接,请使用-lfoo

如果您的图书馆文档没有告诉您应该链接到哪个图书馆,请寻找一个合适的命名文件(如上所述),并使用正确的选项与该图书馆链接。