2

VS 2010 でコンパイルされた Windows で実行する UCL RAT をビルドして修正しようとしています。Visual Studio 2010 とメインの RAT 実行可能ファイルで TCL 8.5.12 を正常にコンパイルしました。

RAT は、TCL を使用してユーザー インターフェイスを駆動します。

zvfs を使用する代わりに、通常は文字列として保存されている TCL コードを zip ファイルに埋め込むように RAT を変更し始めたときに、問題が発生しました。最終的には実行可能ファイルの最後に zip を埋め込んで、ディスクの使用量と配布ファイルの数を最小限に抑えることを目的としています。

そこで、TOBE プロジェクトから zvfs のコードをダウンロードして、それを使用してプロセスを高速化できるかどうかを確認しました (具体的には、基本的に tcl の zvfs 拡張である zvfs.c ファイル)。

これには、どのビルドおよび統合されたものを実行するために Zlib が必要でした。

しかし問題は、zvfs コードが TCL と適切にリンクしていないことです。コンパイルには合格しますが、リンク時に次のエラーが発生します。

2>zvfs.obj : error LNK2019: unresolved external symbol _TclOpenFileChannelInsertProc referenced in function _Zvfs_Init
2>zvfs.obj : error LNK2019: unresolved external symbol _TclStatInsertProc referenced in function _Zvfs_Init
2>zvfs.obj : error LNK2019: unresolved external symbol _TclAccessInsertProc referenced in function _Zvfs_Init

私は c/c++ とリンカーの経験が少ないため、最新バージョンの Windows 用に RAT を修正する際の障害となっています。

RAT のバージョンは UCL サブバージョン サーバーの最新バージョンです。影響がある場合、Zlib はバージョン 1.2.7 です。

乾杯

4

1 に答える 1

1

これらの特定の関数は廃止されましたが、Tcl 8.5 (8.5.12 を含む) までの正しいビルドで引き続きサポートされています。USE_OBSOLETE_FS_HOOKSTcl ライブラリのクリーン ビルド中にプリプロセッサ シンボルを定義するコンパイルを使用する必要があります。悲しいかな、これはビルド手順をデフォルトから変更する必要があることを意味します。私はあなたとはまったく異なる (別のプラットフォームで) ビルド チェーンを使用しているため、私にはどうすることもできません。

また、リンクするときは、スタブ ライブラリではなく、Tcl ライブラリ自体に対してリンクする必要があります。

于 2012-11-27T08:57:59.497 に答える