gpt4 book ai didi

java - undefined symbol 错误

转载 作者:行者123 更新时间:2023-11-28 08:23:44 26 4
gpt4 key购买 nike

我是一名 Java 开发人员,正在编译一些 C++ 代码来构建一个共享对象,以便在 Java 中访问它。我可以成功构建我的“so”文件,但是当我使用 Java 加载它时,出现 undefined symbol: _ZTI18TransportFormatter 错误。我在我的代码中对该符号进行了 grep,我发现该符号是 TcpFormatter.o 和 UdpFormatter.o 的一部分。以下是我的制作文件。如果我在这里遗漏任何东西,请告诉我。

P.S:我正在 ARM 处理器上构建它。当我构建它并在常规 linux x86 上运行时,我没有遇到任何问题。

提前致谢。

LD_LIBRARY_PATH=/usr/lib/gcc/arm-linux-gnueabi/4.3.3/JDK_HOME=/home/skolli/native/java/includeCC=gccCCFLAGS=-c -O2INCLUDE_DIRS=-I$(JDK_HOME) -I$(JDK_HOME)/linuxLIBS=/usr/lib/libstdc++.so.6OBJ= Clock.o Constants.o IpFullAddress.o IcmpFormatter.o IpHeaderFormatter.o TcpFormatter.o UdpFormatter.o IcmpEchoFormatter.o IcmpErrorFormatter.o NetworkHandler.o IcmpTransfer.o jni_util.o JniConnector.oicmpTransfer:   $(OBJ)    $(CC) $(INCLUDE_DIRS) $(LIBS) -shared -o libicmpTransfer.so $(OBJ)Clock.o:        Clock.cpp Clock.h JniConnector.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppConstants.o:        Constants.cpp Constants.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $(FLAGS) $*.cppIcmpFormatter.o:        IcmpFormatter.cpp IcmpFormatter.h Constants.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppIpHeaderFormatter.o:    IpHeaderFormatter.cpp IpHeaderFormatter.h Exception.h JniConnector.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppTcpFormatter.o:         TcpFormatter.cpp TcpFormatter.h IpFullAddress.h IcmpFormatter.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppUdpFormatter.o:     UdpFormatter.cpp UdpFormatter.h IpFullAddress.h TcpFormatter.h IcmpFormatter.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppIcmpEchoFormatter.o:    IcmpEchoFormatter.cpp IpHeaderFormatter.h IcmpFormatter.h IpHeaderFormatter.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppIcmpErrorFormatter.o:   IcmpErrorFormatter.cpp IcmpErrorFormatter.h IcmpEchoFormatter.h Exception.h IpHeaderFormatter.h IpFullAddress.h Exception.h JniConnector.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppIpFullAddress.o:        IpFullAddress.cpp IpFullAddress.h Exception.h JniConnector.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppNetworkHandler.o:       NetworkHandler.cpp NetworkHandler.h Clock.h IpFullAddress.h JniConnector.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppIcmpTransfer.o:         IcmpTransfer.cpp IcmpTransfer.h IcmpFormatter.h IcmpEchoFormatter.h IcmpErrorFormatter.h IpHeaderFormatter.h NetworkHandler.h Clock.h TcpFormatter.h JniConnector.h UdpFormatter.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppjni_util.o:         /home/skolli/native/share/TaCoreLib/jni_util.c /home/skolli/native/share/TaCoreLib/jni_util.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cJniConnector.o:         JniConnector.cpp JniConnector.h ../TaCoreLib/jni_util.h com_attune_netally_ta_corelib_IcmpPacketTransfer.h Clock.h IcmpTransfer.h    $(CC) $(INCLUDE_DIRS) $(CCFLAGS) $*.cppclean:    -rm *.o

最佳答案

只是一个有根据的猜测,但看起来您的代码使用了 RTTI(_ZTI18TransportFormatter = TransportFormatter 的类型信息),直接通过调用 dynamic_casttypeid 或编译器/链接器将如果您没有通过 -fno-rtti 选项明确禁用它,无论如何都要包含它,但这通常在嵌入式平台上不可用。

关于java - undefined symbol 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867719/

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