none
Vista+VB6でWIN.TLBが無いというエラー RRS feed

  • 質問

  • Windows Vista Business 32bitを職場に導入しました。

    目的は、既存のソフト(WindowsXP Pro SP2で動作していたもの)をVistaへ移行させるためです。

    (なぜか2行目からフォントの大きさが変わるのですが、ちゃんと表示できるのかな・・・・)

     

    基本的に全ての環境をインストールしましたが、XPで動いていたVB6ソフトを走らせたところ、

    WIN.TLBが無いためAPIが動作しないことが分かりました。

    XPでは、C:\Windows\System32 に、 WIN.TLB があったのですが、

    Vistaではこのファイルが無いようです。

     

    単純に、XPパソコンからコピーして使用すればいいのでしょうか?

    2008年4月8日 9:59

回答

  •  MHINO さんからの引用

    XPでは、C:\Windows\System32 に、 WIN.TLB があったのですが、

    Vistaではこのファイルが無いようです。

    Windows XP SP2にもそのようなファイルはありません。

    何らかの手段でコピーされたのではないでしょうか。(インストーラ?手動?アップグレード?VB6の付属品?)

     

     MHINO さんからの引用

    単純に、XPパソコンからコピーして使用すればいいのでしょうか?

    そのファイルを入手した際のライセンス、再頒布条項に基づいて下さい。

     

    そろそろ新しい手法に差し替えることも検討した方が良いかもしれませんが…。

    2008年4月8日 15:12
    モデレータ
  • うーん、いまひとつはっきりしないんですが。

     

    WIN.TLB(もしくはWINU.TLB)は、どうもBruce McKinneyさんの書かれた「Hardcore Visual Basic Second Edition」の付録CDで提供されているタイプライブラリのような気がします。

     

    1998年4月版のmsdn Library(日本語版)にこの書籍が未翻訳のまま丸ごと電子書籍として格納されたことがありますので、ここからMHINOさんのシステムに流用されたのかもしれません。

     

    私の手元にはもう当時のmsdn Libraryがありませんので、確認はできないんですが。
    (Windows98のリソースキットCDに格納されている、という情報もあります。)

     

    いずれにせよタイプライブラリは開発環境でのみ必要なファイルであり、コンパイル後のexe実行時には不要です。
    ライセンスも開発環境へのコピーに関してのみで、実行環境への再頒布が許可されることはありません(必要もありません)。

     

    ので、WIN.LIBの原典をあたり、開発環境へのコピーを認める旨の確認をとれば十分です。

     

    文面から察するに、VB6のIDE(開発環境)からの実行に失敗しているんだと思うんですが、この理解でよろしいでしょうか。
    現行XPで動作しているEXEを直接Vistaにコピー(またはインスト)して実行させれば、WIN.TLBがなくとも動作すると思います。

     

    ---

     

    また、もし上述のWIN.LIBであれば、中身はWin32APIの宣言集です。

     

      「Declare文を書くのが大変な人は、このタイプライブラリを参照すれば簡単だよー」

     

    という目的で提供されたもののようです。

     

    ですから、WIN.LIB経由でコールしているAPIを洗い出し、その挙動がVista上で期待通りかの確認を取る必要があるように思います。

     

    確認の結果によっては、WINU.TLB(Unicode版、WIN.LIBはANSI版)に差し替える、または改めてDeclare文で置き換えてやるという対処法が必要になる可能性があります。

    2008年4月8日 17:15
  • お二方とも回答ありがとうございました。

    ご推測の通り、開発環境をVistaへ移行する途中で困っていました。

    開発環境のセットアップ用ファイル(社内作成)を実行したところ、必要なファイルがインストールされ、開発環境の移行に成功しました。というわけで、自己解決しました。

    WIN.TLBが開発環境専用で、アプリの再配布には不要だったとは知りませんでした。

    Declare宣言をすれば不要なものなんですね。開発環境見直しも併せて検討します。

    ありがとうございました。これで〆ます。

    2008年4月9日 5:55

すべての返信

  •  MHINO さんからの引用

    XPでは、C:\Windows\System32 に、 WIN.TLB があったのですが、

    Vistaではこのファイルが無いようです。

    Windows XP SP2にもそのようなファイルはありません。

    何らかの手段でコピーされたのではないでしょうか。(インストーラ?手動?アップグレード?VB6の付属品?)

     

     MHINO さんからの引用

    単純に、XPパソコンからコピーして使用すればいいのでしょうか?

    そのファイルを入手した際のライセンス、再頒布条項に基づいて下さい。

     

    そろそろ新しい手法に差し替えることも検討した方が良いかもしれませんが…。

    2008年4月8日 15:12
    モデレータ
  • うーん、いまひとつはっきりしないんですが。

     

    WIN.TLB(もしくはWINU.TLB)は、どうもBruce McKinneyさんの書かれた「Hardcore Visual Basic Second Edition」の付録CDで提供されているタイプライブラリのような気がします。

     

    1998年4月版のmsdn Library(日本語版)にこの書籍が未翻訳のまま丸ごと電子書籍として格納されたことがありますので、ここからMHINOさんのシステムに流用されたのかもしれません。

     

    私の手元にはもう当時のmsdn Libraryがありませんので、確認はできないんですが。
    (Windows98のリソースキットCDに格納されている、という情報もあります。)

     

    いずれにせよタイプライブラリは開発環境でのみ必要なファイルであり、コンパイル後のexe実行時には不要です。
    ライセンスも開発環境へのコピーに関してのみで、実行環境への再頒布が許可されることはありません(必要もありません)。

     

    ので、WIN.LIBの原典をあたり、開発環境へのコピーを認める旨の確認をとれば十分です。

     

    文面から察するに、VB6のIDE(開発環境)からの実行に失敗しているんだと思うんですが、この理解でよろしいでしょうか。
    現行XPで動作しているEXEを直接Vistaにコピー(またはインスト)して実行させれば、WIN.TLBがなくとも動作すると思います。

     

    ---

     

    また、もし上述のWIN.LIBであれば、中身はWin32APIの宣言集です。

     

      「Declare文を書くのが大変な人は、このタイプライブラリを参照すれば簡単だよー」

     

    という目的で提供されたもののようです。

     

    ですから、WIN.LIB経由でコールしているAPIを洗い出し、その挙動がVista上で期待通りかの確認を取る必要があるように思います。

     

    確認の結果によっては、WINU.TLB(Unicode版、WIN.LIBはANSI版)に差し替える、または改めてDeclare文で置き換えてやるという対処法が必要になる可能性があります。

    2008年4月8日 17:15
  • お二方とも回答ありがとうございました。

    ご推測の通り、開発環境をVistaへ移行する途中で困っていました。

    開発環境のセットアップ用ファイル(社内作成)を実行したところ、必要なファイルがインストールされ、開発環境の移行に成功しました。というわけで、自己解決しました。

    WIN.TLBが開発環境専用で、アプリの再配布には不要だったとは知りませんでした。

    Declare宣言をすれば不要なものなんですね。開発環境見直しも併せて検討します。

    ありがとうございました。これで〆ます。

    2008年4月9日 5:55