2007年9月30日日曜日

在Cygwin中用gcc(g++)编译JNI的C(C++)程序的注意事项

在Cygwin中用gcc(g++)编译JNI的C(C++)程序时,由于jni_md.h头文件中有以下定义
typedef  __int64  jlong;
所以编译是通不过的。必须在编译时加上下面的参数
g++ -D__int64='long long' 。
这是因为在Windows的C编译器中有__int64的定义,但GCC中是没有的。

另外,在链接时,要加上以下的选项
g++ -mno-cygwin -Wl,--add-stdcall-alias
加-mno-cygwin是为了让编译出来的DLL不依赖于CYGWIN的DLL。
加-Wl,--add-stdcall-alias是为了在运行时,不出现UnsatisfiedLinkError的错误。

0 件のコメント: