我正在尝试在 Windows 7 下将一个名为jbliss的开源项目编译为 DLL,以便我可以在 Java 中将它与 JNI 一起使用。使用软件包中已经提供的 makefile 在 Linux 中一切正常。
我的第一次搜索将我指向 cygwin,然后我遵循了几个建议,比如这个,它基本上告诉我使用:
gcc-3 -D __int64="long long" -mno-cygwin -Wl,--add-stdcall-alias
-I"<JAVA_HOME>\include" -I"<JAVA_HOME>\include\win32" -shared -o jbliss.dll *.cc
这主要给我带来以下错误:
bliss-0.50/timer.cc:2:23: sys/times.h: No such file or directory
我用谷歌搜索了这个错误,发现了这篇文章,建议使用-I /usr/include/
. 但这会导致比它解决的错误更多:
In file included from /usr/lib/gcc/i686-pc-mingw32/3.4.4/include/c++/bits/stl_algobase.h:67,
from /usr/lib/gcc/i686-pc-mingw32/3.4.4/include/c++/bits/stl_tree.h:66,
from /usr/lib/gcc/i686-pc-mingw32/3.4.4/include/c++/set:66,
from bliss-0.50/graph.cc:4:
/usr/lib/gcc/i686-pc-mingw32/3.4.4/include/c++/cstdlib:181: error: `::strtold' has not been declared
/usr/lib/gcc/i686-pc-mingw32/3.4.4/include/c++/cstdlib:200: error: `__gnu_cxx::strtold' has not been declared
所以我现在很困惑,希望得到一个答案,使用 gcc 的哪些选项来让它正确。我刚刚下载了 cygwin,我会说我有最新版本。
提前致谢。
额外的本地信息:
$ which gcc
/usr/bin/gcc
$ echo $PATH
/usr/local/bin:/usr/bin:/cygdrive/c/WATCOM/BINNT:/cygdrive/c/WATCOM/BINW:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/QuickTime Alternative/QTSystem:/cygdrive/c/Program Files/TortoiseSVN/bin:/cygdrive/c/Program Files/MATLAB/R2011b/runtime/win64:/cygdrive/c/Program Files/MATLAB/R2011b/bin:/cygdrive/c/Program Files (x86)/OpenSSH/bin:/cygdrive/c/Program Files/MiKTeX 2.9/miktex/bin/x64:/cygdrive/c/Program Files (x86)/Graphviz 2.28/bin