gpt4 book ai didi

c++ - 使用 g++ 的 undefined symbol

转载 作者:行者123 更新时间:2023-11-30 04:35:17 25 4
gpt4 key购买 nike

我已经为 asio 库实现了 boost 的教程示例,但是通过头文件进行了分离:

server.cpp

server.h

我按以下方式使用另一个 .cpp 文件构建这两个文件:

g++ -I/usr/lib/jvm/java-6-openjdk/include -L/usr/local/lib -fPIC  -lboost_system -shared -o libagent.so agent.cpp server.cpp 

当使用我编译的共享库时,我得到:

java: symbol lookup error: ./libagent.so: undefined symbol: _ZN14tcp_connection6socketEv

这个错误的原因似乎是什么? ldd -d 没有遗漏依赖项。

最佳答案

你实际上并没有链接到 boost::asio 库,因此共享对象不知道在哪里可以找到你的类中正在使用的符号。

假设库名为boost_asio,你需要添加:

-lboost_asio

到链接行。

...从头开始,完全错误。

您缺少 tcp_connection::socket 的实现 - 这就是错误的来源。

也许是这条线:

tcp::socket& socket();

.h文件中需要读取:

tcp::socket& socket() { return socket_; }

关于c++ - 使用 g++ 的 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com