gpt4 book ai didi

java - 使用 JNA 从 java 中的内部源对象 (.so) 文件调用 C++ 函数时出现链接异常。

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

我正在尝试从 java(JNA) 中的 c++ .so 文件访问函数。我可以从此 .so 文件调用简单的“Hello”类型函数。但是当我尝试访问内部调用其他文件(用 C 编写的 .so 文件)的函数的其他函数时,我收到如下异常:线程“main”中的异常 java.lang.UnsatisfiedLinkError:/home/stpl/workspace/TestJNA/bin/libhello.so: undefined symbol : PInit

我陷入了困境。任何帮助将不胜感激。

最佳答案

现在我的问题已经解决了。如果有人遇到同样的问题,问题出在 .so 文件中。下面是.mk文件创建.so文件的脚本。

CC=g++CFLAG= -g -O0

PRNINC= -I ./包含 -I ./PRT.IF -I./appPRNLIBS= -lHWIGotPrinter -lcommon -lpthread -ldl

ASTYLE=astyleASTYLEFLAGS= --style=ansi -t -p -b -S -K

compiledate=$(shell 日期 '+%F %T')DEFS=-D DEFINE_MKDATE="\"$(编译)\""

INC_PUB= -I./包含 -I./PRT.IF -I./SCANNER.IF -I ./包含包括=$(INC_PUB)

%.o:%.cpp $(CC) $(CFLAG) $(DEFS) -fPIC $(INCLUDE) -c $< -shared -o $@

%.o: %.c $(CC) $(CFLAG) $(DEFS) -fPIC $(INCLUDE) -c $< -shared -o $@

.PHONY:全部
全部:PRN

HSCAN CDU UPS

PRNAPPS= bin/libprntest.so
PRN:$(PRNAPPS)

bin/libprntest.so:app/prn_proc.cpp app/prntest.cpp app/myCpp.cpp $(CC) $(CFLAG) $(DEFS) $(PRNINC) $(PRNLIBS) $^ -共享 -o $@

距离:全部 mkdir -p 安装测试 rm -rf 安装测试/* cp -a bin insttest/ cp -f Makefile 安装/ tar -czf inst-$(MAJOR).$(MINOR).tgz insttest/ rm -rf 安装测试

安装: 安装-m 755 $(PRNAPPS)/usr/bin

清理: 寻找 。 -名称 *.o |xargs rm -f 寻找 。 -名称 *~ |xargs rm -f 寻找 。 -名称 *.bak |xargs rm -f 寻找 。 -名称 *.orig |xargs rm -f 寻找 。 -名称 *.cpp |xargs chmod 644 寻找 。 -name .h |xargs chmod 644 chmod 644 ./etc-lib/gotlib.

干净: 寻找 。 -名称 *.o |xargs rm -f 寻找 。 -名称 *~ |xargs rm -f 寻找 。 -名称 *.bak |xargs rm -f 寻找 。 -名称 *.orig |xargs rm -f 寻找 。 -名称 *.cpp |xargs chmod 644 寻找 。 -名称 *.h |xargs chmod 644 rm -f $(PRNAAPPS) $(SCANAPPS) $(HSCANAPPS) $(UPSAPPS) $(CDUAPPS) $(HARDWAREAPPS) $(CMOSAPPS) $(TOOLSAPPS)

帮助: 回显“打造风格” 回声“make cleanbak” 回声“清理干净” 回声“使” 回声“制作距离” 回显“进行安装”

关于java - 使用 JNA 从 java 中的内部源对象 (.so) 文件调用 C++ 函数时出现链接异常。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25529120/

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