Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带有g+的未定义符号+;_C++_Unix_G++_Java Native Interface - Fatal编程技术网

C++ 带有g+的未定义符号+;

C++ 带有g+的未定义符号+;,c++,unix,g++,java-native-interface,C++,Unix,G++,Java Native Interface,我已经为asio库实现了boost的教程示例,但是通过头文件进行了分离: 我以以下方式使用另一个.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:

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

我以以下方式使用另一个.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没有提供依赖项缺失。

最有可能的猜测是
/libagent。因此
是使用不同的编译器/设置/环境编译的,名称mangling并不完全匹配。

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

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

-lboost_asio
连接到连接线

。。。划破它,完全错了

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

也许这句话:

tcp::socket& socket();
在.h文件中,需要读取:

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

你可以把你的实际代码放在这个网站上。这样更有用。你设置了LD_LIBRARY_路径了吗?@SB:yes@Tim:ok,我想这会太多代码我找不到这个库,也不是这样命名的。对不起,我想这叫做“boost_序列化”。有几个依赖项:boost_线程,boost_序列化,等等。添加它们并不会改变我在asio库中已经使用过的错误,但代码是教程中的1:1。由于我对头文件和源文件使用了单独的文件,所以错误不断发展