zaloo
zaloo

Reputation: 929

GCC option not found while constructing .dll

I'm trying to create a .dll while following this tutorial (http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html) to use JNI in my eclipse project. There's an issue with my makefile however that may be unrelated to all the JNI stuff.

I'm getting "unknown option: --add-stdcall-alias" when I build (make all). I'm using the Mac GCC Compiler. Here's my console log and make file:

EDIT: So i removed the option that is giving me the error and my build worked. However, I feel unsafe just removing a line of code that I am clueless about. Any one want to tell me the implications of removing this code?

console output: 18:05:33 ** Build of configuration Default for project HPA* Testing * make all javah -classpath ../bin HPAProgram gcc -Wl,--add-stdcall-alias -shared -o hpaprogram.dll HPAProgram.o ld: unknown option: --add-stdcall-alias clang: error: linker command failed with exit code 1 (use -v to see invocation) make: ** [hpaprogram.dll] Error 1

18:05:34 Build Finished (took 823ms)

makefile:

# Define a variable for classpath
CLASS_PATH = ../bin

# Define a virtual path for .class in the bin directory
vpath %.class $(CLASS_PATH)

all : hpaprogram.dll

# $@ matches the target, $< matches the first dependancy
hpaprogram.dll : HPAProgram.o
    gcc -Wl,--add-stdcall-alias -shared -o $@ $<

# $@ matches the target, $< matches the first dependancy
HPAProgram.o : HPAProgram.c++ HPAProgram.h
    gcc -I /System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/ -c $< -o $@

# $* matches the target filename without the extension
HPAProgram.h : HPAProgram.class
    javah -classpath $(CLASS_PATH) $*

clean :
    rm HPAProgram.h HPAProgram.o hpaprogram.dll

Upvotes: 1

Views: 317

Answers (1)

Alan Zhiliang Feng
Alan Zhiliang Feng

Reputation: 2022

I practiced by following the same tutorial, it turned out that it's OK to get rid of "-Wl,--add-stdcall-alias".

BTW, in Mac, you have to use ".dylib" instead of ".so", otherwise you will get error saying "java.lang.UnsatisfiedLinkError: no hello in java.library.path".

Upvotes: 1

Related Questions