http://community.activestate.com/node/7011
それは、別の年であり、MSVS 2012 を持っていることを除いて、リンクのあそこにあるかわいそうなチャップ シャン (性別に中立的にチャップを使用できますか?) のようなものです。
詳細
CMake は、バイナリの依存関係リストに C:...\Tcl\lib\tcl85.lib を配置しました (生成された .vcproj ファイルをチェックインしました - そこにあります)。それにもかかわらず、リンカ エラーは多数あり、次のような形式です。
nativeTCL_wrap.obj : エラー LNK2019:関数 _SWIG_Tcl_ [some-other-command- name] で参照されている未解決の外部シンボル __imp__Tcl_ [some-command -name] 。
したがって、MSVS のプロジェクトの依存関係リストに記載されているヘッダー ファイルを確認します。バージョンは#define
8.5 です。これは、リンクしようとしているライブラリと一致します。tcl85.lib を依存関係ウォーカーで調べてみました。どうやらその種のファイルを探索することはできません。その上でdumpbin.exeを実行しました...そして、.libファイルには不足している機能がすべて含まれていますが、次の形式です。
__imp_Tcl_ [何らかのコマンド名]
すべての記号があります...しかし、それぞれにアンダースコアがありません!
次に、Cygwin で使用される ActiveState の Tcl ディストリビューションによって提供される libtcl85.dll.a ファイルを調べたところ、シンボルは次のようになりました。
__imp__Tcl_ [何らかのコマンド名]
したがって、余分なアンダースコアがあり、 Cygwin でバイナリ リンクが適切に行われます。
...
これは真剣に、私が手を空中に投げ上げて「どうしよう」と考えている瞬間の 1 つです。その単純化された文法的に台無しにされた栄光のすべてにおいて。同じ CMake を使用した同じ swig インターフェース ファイルは、Cygwin でモジュールを正常に生成します。しかし、Cygwin の開発は非常に遅いため、厄介な作業です (ビルドは、よりネイティブな Windows っぽいシステムのほぼ 5 ~ 8 倍の長さになります)。
次は何が起こる?
アンダースコアが 1 つ少ない依存関係を生成するように Swig を説得しようとしますか? もしそうなら、どのように?あきらめてバグレポートを提出しますか? もしそうなら、どこですか?これは ActiveState Tcl のバグですか? これは Swig のバグですか? これはまったくバグではなく、私はただめちゃくちゃですか?
アンダースコアがないために王国が失われたのですか?