現在我的問題解決了。 如果有人遇到同樣的問題,問題出在.so文件中。 以下是用於創建.so文件的.mk文件的腳本。
CC =克++ CFLAG = -g -O0
PRNINC = -I -I ./Include ./PRT.IF -I./app PRNLIBS = -lHWIGotPrinter -lcommon -lpthread -ldl
的astyle =的astyle ASTYLEFLAGS = --style = ANSI -t -p -b -S -K
compiledate = $(殼日期 '+%F%T') DEFS = -D DEFINE_MKDATE =「\ 「$(編輯)\」「
INC_PUB = -I./Inclu德-I./PRT.IF -I./SCANNER.IF -I ./Include INCLUDE = $(INC_PUB)
%的.o:%的.cpp $(CC)$(CFLAG)$(DEFS )-fPIC $(含)-C $ < -shared -o $ @
%的.o:%.c的 $(CC)$(CFLAG)$(DEFS)-fPIC $(含)-C $ < -shared -o $ @
.PHONY:所有
所有:PRN
HSCAN CDU UPS
PRNAPPS =倉/ libprntest.so
PRN:$(PRNAPPS)
斌/ libprntest.so:應用程序/ prn_proc.cpp應用程序/ prntest.cpp應用程序/ myCpp.cpp $(CC)$(CFLAG )$(DEFS)$(PRNINC)$(PRNLIBS)$^-o -shared $ @
DIST:所有 的mkdir -p insttest 室射頻insttest/* CP -a斌insttest/ CP - f Makefile inst/ tar -czf inst - $(MAJOR)。$(MINOR).tgz insttest/ rm -rf insttest
安裝: 安裝-m 755 $(PRNAPPS)/ usr/bin
cleanbak: 找到。 -name * .o | xargs rm -f 找到。 -name *〜| xargs rm -f 找到。 -name * .bak | xargs rm -f 找到。 -name * .orig | xargs rm -f 找到。 -name * .cpp | xargs chmod 644 查找。 -name .h | xargs chmod 644 chmod 644 ./etc-lib/gotlib。
clean: 找到。 -name * .o | xargs rm -f 找到。 -name *〜| xargs rm -f 找到。 -name * .bak | xargs rm -f 找到。 -name * .orig | xargs rm -f 找到。 -name * .cpp | xargs chmod 644 查找。 -name是* .h | xargs的文件模式644 RM -f $(PRNAPPS)$(SCANAPPS)$(HSCANAPPS)$(UPSAPPS)$(CDUAPPS)$(HARDWAREAPPS)$(CMOSAPPS)$(TOOLSAPPS)
幫助: 回聲「讓風格」 回聲「讓cleanbak」 回聲「使清潔」 回聲「做」 回聲「讓DIST」 回聲「讓安裝」
好,。所以應該是短期的共享對象。你的標題說JNA。我認爲粘貼一些相關的代碼是一個好主意。 – HuStmpHrrr 2014-08-27 13:59:51
那麼它是什麼調用C或C++?這些是不同的語言。 – 2014-08-27 14:17:31
@ JensGustedt-我正在調用C++函數,並且C++函數正在調用C中庫的函數。 – DpkTheJavaCoder 2014-08-28 04:43:04