none
VC++2013(64bit)開発環境でのVB6.0用のDLL作成について RRS feed

  • 質問

  • Windows 7 64ビット環境にてVS2013 VC++を利用して、32bit環境にて動作するVB6.0用のDLLを作成しようとしております。

    作成したDLLを32bit環境にて動作させようとすると「実行時エラー 53 ファイルが見つかりません。XXX.dll」とエラーメッセージが発生し、実行することができません。

    DLLへのパスは通っており、MFC等は利用しておりません。

    また、Windows 7 32bit環境にてDLLを再コンパイルすると問題なく動作いたします。

    どなたか、64ビット開発環境での32bit環境向けのDLL作成方法または利用方法をご教授頂けないでしょうか

    2014年2月21日 5:45

回答

  • >設定を変更してビルドを行いましたが、実行時エラーが発生してしまいました。

    このスレッドは最初から実行時エラーの話題ですよね?今までと何か変わったのでしょうか?

    変わったのであれば、具体的なエラー内容を記載しないと、どんなエラーか想像することも難しいと思いますよ。

    逆に変わっていないのであれば、ビルドオプションの問題だけではないということになりますので、DependencyWalker などを活用して詳細チェックするなどが必要になると思います。

    また、今まで動いていた環境で、どういう結果になったかの調査も併せて進めておくことをお勧めします。

    ビルドオプションを変更したことが原因でエラーが発生するようになったのであれば、今まで動作していた環境でもエラーが発生する可能性があります。

    完全ではなくても切り分けの指針にはなると思います。


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    2014年2月21日 7:28

すべての返信

  • おそらく、VB6を実行しようとしている環境に必要なDLL(VCランタイムなど)が入っていないのでは?と思いますが、エラーメッセージだけではわかりかねます。Dependency Walker などを利用して、足りないDLLがないかを確認してみてはいかがでしょうか?

    64bitOSだからと言って、32bitのDLLが作れないということはありません(C++のプロジェクトテンプレートは32bitモジュールを作成するように用意されています)。

    ところで、VB6アプリを実行しようとしているOSはなんでしょう?XP環境で実行する場合は、プロジェクトの設定をXP用に変更する必要があります。そのあたりは大丈夫ですか?


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    2014年2月21日 6:27
  • > おそらく、VB6を実行しようとしている環境に必要なDLL(VCランタイムなど)が入っていないのでは?と思いますが、
    > エラーメッセージだけではわかりかねます。Dependency Walker などを利用して、足りないDLLがないかを
    > 確認してみてはいかがでしょうか?

    Dependency Walkerを利用し調査を行いたいとおもいます。


    > 64bitOSだからと言って、32bitのDLLが作れないということはありません
    > (C++のプロジェクトテンプレートは32bitモジュールを作成するように用意されています)。

    情報ありがとうございます。
    プロジェクトはWin32に設定してビルドしております。


    > ところで、VB6アプリを実行しようとしているOSはなんでしょう?

     Windows7 64bit、Windows7 32bit および WindowsXPにてテストを行いました。


    > XP環境で実行する場合は、プロジェクトの設定をXP用に変更する必要があります。
    > そのあたりは大丈夫ですか?

    上記のプロジェクト設定は行っておりません。
    どのように設定を行えばよいかご教授頂けないでしょうか。

    お手数ですが、宜しくお願いいたします。

    2014年2月21日 6:42
  • >どのように設定を行えばよいか

    プロジェクトのプロパティを開き、ツリーの全般を選ぶと下のほうに「プラットフォーム ツールセット」という項目があります。

    ここで、v120_xp あるいは、VS2010 やそれ以前を選択(VS2010/2008を選ぶ場合、あらかじめ該当するVSがインストールされていなければならない)を選べばXP用の出力を得られます。

    ただし、XP用のランタイムはいくつかの機能制限があります(特に非同期処理回り)。DLLの内容によっては設定できないなどがあるかもしれませんのでご注意ください。


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    2014年2月21日 6:50
  • ちなみにファイルはどこに配置したのでしょうか? またWindows7 64bit、Windows7 32bit および WindowsXP全ての環境で同じエラーになったのでしょうか?
    2014年2月21日 7:09
  • > プロジェクトのプロパティを開き、ツリーの全般を選ぶと下のほうに「プラットフォーム ツールセット」

    > という項目があります。

    設定を確認を致しました。

    情報ありがとうございます。

    設定を変更してビルドを行いましたが、実行時エラーが発生してしまいました。

    > ただし、XP用のランタイムはいくつかの機能制限があります(特に非同期処理回り)。

    > DLLの内容によっては設定できないなどがあるかもしれませんのでご注意ください。

    他の方の作成したソースなもので、詳細については、まだ分かっておりませんが、

    非同期処理が含まれているようです。

    2014年2月21日 7:17
  • > ちなみにファイルはどこに配置したのでしょうか?

    XPのみドライブが異なりますが、フォルダ構成は同様にし、

    D:\bin

    (E:\bin)

    に配置し、環境変数のPATHに設定を行いました。

    ※ EXEファイル、DLLファイル共に同様のフォルダへ保存しております。

    2014年2月21日 7:22
  • >設定を変更してビルドを行いましたが、実行時エラーが発生してしまいました。

    このスレッドは最初から実行時エラーの話題ですよね?今までと何か変わったのでしょうか?

    変わったのであれば、具体的なエラー内容を記載しないと、どんなエラーか想像することも難しいと思いますよ。

    逆に変わっていないのであれば、ビルドオプションの問題だけではないということになりますので、DependencyWalker などを活用して詳細チェックするなどが必要になると思います。

    また、今まで動いていた環境で、どういう結果になったかの調査も併せて進めておくことをお勧めします。

    ビルドオプションを変更したことが原因でエラーが発生するようになったのであれば、今まで動作していた環境でもエラーが発生する可能性があります。

    完全ではなくても切り分けの指針にはなると思います。


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    2014年2月21日 7:28
  • Dependency Walkerなどを利用しての切り分け作業を行いたいと思います。

    ご助言、誠にありがとうございます。

    2014年2月21日 8:27