我在C中有一个JNI设置,其中一个C文件包含代码,一个java类用于调用C代码。每当我在C代码中调用另一个函数内的函数时,我在编译makefile时会出错:
CCode.o:CCode.c:(.text+0x205): undefined reference to `CFunction'
collect2.exe: error: ld returned 1 exit status
make: *** [CCode.dll] Error 1
使用MinGW在eclipse中编译。除了调用其他人按预期工作的功能之外的所有功能。
# Define a variable for classpath
CLASS_PATH = ../bin
# Define a virtual path for .class in the bin directory
vpath %.class $(CLASS_PATH)
all : CCode.dll
# $@ matches the target, $< matches the first dependancy
CCode.dll : CCode.o
gcc -Wl,--add-stdcall-alias -shared -o $@ $<
# $@ matches the target, $< matches the first dependancy
CCode.o : CCode.c CCode.h
gcc -I "<<jdk location>>" -I "<<jdk location>>" -c $< -o $@
# $* matches the target filename without the extension
CCode.h : CCode.class
javah -classpath $(CLASS_PATH) $*
clean :
rm CCode.h CCode.o CCode.dll