默默无闻的coder 2013-12-12 03:10 采纳率: 0%
浏览 3680

JNI 运行错误 symbol lookup error

/usr/lib/jvm/java-6-openjdk-amd64/bin/java -Djava.library.path=../cef-swt-gtk-linux-x86_64-native/ -cp ./target/classes:./target/test-classes:$HOME/.m2/repository/org/eclipse/swt/org.eclipse.swt.gtk.linux.x86_64/3.7.2/org.eclipse.swt.gtk.linux.x86_64-3.7.2.jar com.zxg.cef.swt.test.TestWindow

错误:
/usr/lib/jvm/java-6-openjdk-amd64/bin/java: symbol lookup error: /home/xxx/code/workspace/eclipse_workspace/cef-swt-gtk-linux-x86_64-native/libcef-swt-gtk-linux-x86_64.so: undefined symbol: _Z13CefInitializeRK11CefMainArgsRK13CefStructBaseI17CefSettingsTraitsE9CefRefPtrI6CefAppE

makefile:

OBJS =      cef-swt-gtk-linux-x86_64.o

JAVA_HOME = /usr/lib/jvm/java-6-openjdk-amd64

CXXFLAGS = -fPIC -Wall -fmessage-length=0 -I$(JAVA_HOME)/include -I/usr/local/include/cef3 `pkg-config --cflags gtk+-2.0`

LIBS = -lcef -lffmpegsumo `pkg-config --libs gtk+-2.0`

LDFLAGS := -shared -fpic -Wl,-rpath,/usr/local/lib

CXX = g++

TARGET =    libcef-swt-gtk-linux-x86_64.so

$(TARGET):  $(OBJS)
    $(CXX) $(LDFLAGS) -o $(TARGET) $(OBJS) $(LIBS)

all:    $(TARGET)

../cef-swt-gtk-linux-x86_64/target/classes/com/zxg/cef/swt/Cef.class: ../cef-swt-gtk-linux-x86_64/src/main/java/com/zxg/cef/swt/Cef.java
    mvn -f ../cef-swt-gtk-linux-x86_64/pom.xml compile

com_zxg_cef_swt_Cef.h: ../cef-swt-gtk-linux-x86_64/target/classes/com/zxg/cef/swt/Cef.class
    $(JAVA_HOME)/bin/javah -classpath ../cef-swt-gtk-linux-x86_64/target/classes com.zxg.cef.swt.Cef

cef-swt-gtk-linux-x86_64.o: cef-swt-gtk-linux-x86_64.cpp com_zxg_cef_swt_Cef.h
    $(CXX) $(CXXFLAGS) -c -o cef-swt-gtk-linux-x86_64.o cef-swt-gtk-linux-x86_64.cpp

clean:
    rm -f $(OBJS) $(TARGET)
  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-26 17:22
    关注

    该回答引用ChatGPT

    这个错误通常发生在动态链接库中缺少符号的情况下。在这种情况下,当Java程序调用本机代码时,动态链接库无法解析符号,并且会导致错误。


    根据您的错误消息,缺少符号为“_Z13CefInitializeRK11CefMainArgsRK13CefStructBaseI17CefSettingsTraitsE9CefRefPtrI6CefAppE”。这个符号是CEF库的一部分,它在本机代码中被调用。


    要解决此错误,您可以尝试以下步骤:

    • 确保您已经正确地链接了CEF库。请检查makefile文件,确保在链接期间包含了CEF库。
    • 检查您是否使用了正确的CEF版本。请确保本机代码使用的是与Java代码链接的CEF库版本匹配的CEF版本。如果版本不匹配,则可能会导致符号不匹配。
    • 确保您的CEF库已经正确地安装和配置。请检查CEF库的安装路径和动态链接库的位置,确保它们被正确地设置和导出。
    • 您可以尝试重新编译和链接本机代码。请确保重新编译和链接本机代码时,使用的是正确的编译器选项、标志和库路径。

    希望这些提示可以帮助您解决问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何实验stm32主通道和互补通道独立输出
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题