1

jblissというオープン ソース プロジェクトを Windows 7 で DLL としてコンパイルして、Java の JNI で使用できるようにしようとしています。パッケージで既に提供されているメイクファイルを使用して、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
4

1 に答える 1

3

さらにグーグルで調べてみると、実際には sys/times.h が mingw で利用できない (そして明らかに利用できないはずである) という事実がわかりました。sys/times.h の下のインクルード ファイルは、プラットフォームに依存すると言われているため、Windows ではサポートされていません。

解決策は、sys/times.h (またはプラットフォームに依存するライブラリ) への呼び出しを可能な限り削除することです。これらのインクルード ファイルを削除すると (もちろん、コンパイラに適切なオプションを追加すると)、ビルドが成功します。

于 2013-03-02T18:01:58.120 に答える