我编译了目标文件,然后尝试编译可执行文件,但失败了,说在“theLib”中存在未定义的函数引用。
g++ -I./theLib/src -c -o obj/main.o src/main.cpp
(目前有效)
g++ -L./theLib -Wl,-rpath=./theLib obj/main.o -ltheLib -o exe
(错误:libtheLib.so:未定义对“some_function”的引用
)
我到处检查答案,他们都只是建议将 -ltheLib
部分移到依赖项之后(我这样做了)。但它仍然不起作用。真正让我感到困惑的是,对于不同目录中的示例,同一个库编译得很好。
库在 C 中。尝试编译 C++ 会搞砸吗?还是我只是遗漏了一些先编译 .o
文件的东西?
最佳答案
事实证明,该库依赖于我必须在自己的源代码中实现和提供的功能。我从来不知道有些图书馆会这样做,但吸取了教训。一旦我实现了导致错误的函数并添加了这些源文件,它就起作用了。
关于c++ - 编译对象后链接共享库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26855018/