1

これが重複した質問である場合は、お詫び申し上げます。必要なGemsの1つとしてZipRubyを含むプロジェクトを継承しました。私のローカル開発環境はWindows7です。私のルビーは1.9.3p194です。Rails3.2.6を持っています。RubyDevKitバージョン452をインストールしました。

他のすべての必要なgemは、インストールするか、Windows 7ではエラーなしでネイティブに準拠しますが、ZipRubygemです。私は最初から宝石を作ったことがありません。gemのコンパイルが開始され、次のエラーが発生します。

`enter code here`        linking shared-object zipruby.so
        tmpfile.o: In function `zipruby_tmpnam':
        C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/tmpfile.c:56: undefined reference to `strcpy_s'
        C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/tmpfile.c:62: undefined reference to `_sopen_s'
       zipruby_archive.o: In function `zipruby_archive_read':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zipruby_archive.c:1447: undefined reference to `fopen_s'
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zipruby_archive.c:1471: undefined reference to `_fclose_nolock'
       zip_close.o: In function `add_data':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_close.c:293: undefined reference to `ftello'
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_close.c:312: undefined reference to `ftello'
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_close.c:314: undefined reference to `fseeko'
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_close.c:328: undefined reference to `fseeko'
       zip_close.o: In function `zip_close':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_close.c:188: undefined reference to `ftello'
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_close.c:153: undefined reference to `fseeko'
       zip_crypt.o: In function `zip_crypt':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_crypt.c:293: undefined reference to `ftello'
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_crypt.c:265: undefined reference to `fseeko'
       zip_dirent.o: In function `zip_cdir_write':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_dirent.c:109: undefined reference to `ftello'
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_dirent.c:116: undefined reference to `ftello'
       zip_file_get_offset.o: In function `zip_file_get_offset':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_file_get_offset.c:64: undefined reference to `fseeko'
       zip_fopen_index.o: In function `zip_file_fillbuf':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_fopen_index.c:155: undefined reference to `fseeko'
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_fopen_index.c:155: undefined reference to `fseeko'
       zip_open.o: In function `zip_checkcons':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_open.c:282: undefined reference to `fseeko'
       zip_open.o: In function `zip_open':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_open.c:84: undefined reference to `fseeko'
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_open.c:85: undefined reference to `ftello'
       zip_open.o: In function `zip_find_central_dir':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_open.c:436: undefined reference to `fseeko'
       zip_open.o: In function `zip_readcdir':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_open.c:217: undefined reference to `fseeko'
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_open.c:220: undefined reference to `ftello'
       zip_source_filep.o: In function `read_file':
       C:\Ruby193\lib\ruby\gems\1.9.1\gems\zipruby-0.3.6\ext/zip_source_filep.c:105: undefined reference to `fseeko'
    collect2: ld returned 1 exit status                                             make: *** [zipruby.so] Error 1

1つ以上のライブラリファイルへの参照が解決されていないことは明らかです。次はどこに行けばいいのかわからない。誰かがWindows7でrubyのmingwインストールでziprubyを使用することに成功しましたか?

私が上で逃したいくつかの追加情報。これを実現するには、Windows開発バージョンのGnuWin32をインストールする必要がありました。したがって、gemのビルドコマンドは次のとおりです。Geminstall ZipRuby --- with-opt-dir=Path.to.GnuWin32.folder。このフォルダーには、ソースコードを含むlibフォルダーとbinフォルダーが含まれている必要があります。私がもっと学び、他のどこからでも答えを得る前に何かを理解したら解決策を投稿するなら、私は質問をもっと更新します。

4

1 に答える 1