• 締切済み

VC2005で作成したDLLファイルをVC2008で動的リンク(LoadLibrary)する方法

「VC2005 Standard Edition」で作成したDLLファイルを、 「VC2008 Express Edition」で作成したコンソールアプリケーション から、LoadLibrary("VC2005で作成したDLLファイル")すると 失敗してしまいます。 GetLastErrorでエラーを取得すると、"36B1"が表示されます。 (このエラーは何か調べても見つかりませんでした) 何が原因かご存知の方がいらっしゃいましたら、 ご教授頂けませんでしょうか。

みんなの回答

回答No.4

MFCは使われていないということで良いですか?MFCを使っていると、基本互換が取れないと思ってください。

darkness22
質問者

お礼

はい、使用しておりません。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

(1)テキストファイルに以下の記述を行う。 Library xxx ← DLLファイルの名前 Exports aaa ← 関数名 (2)リンクオプションを追加する。  /def xxx.txt ← 上記テキストファイルの名前

darkness22
質問者

お礼

ありがとうございます。 リンクすることができました。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>上記の状態でも、VC2005同士であれば正常に動作してしまう >のが不思議です。VC2008同士であっても正常に動作します。 >これって何かあるんでしょうか? VC2008 Express Editionが入っているマシンにVS2005のランタイムをインストールしてありますか?

darkness22
質問者

補足

リンクの問題が解決しました。 しかし、LoadLibraryで同じエラーが出ます。 また、VC2008 Express Editionが入っている マシンにVS2005のランタイムをインストール しても症状は同じでした。 <ランタイムURL> http://www.microsoft.com/downloads/details.aspx?DisplayLang=ja&FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee#RelatedDownloads あと、試しにバーチャルPC 2007上で動かすと、 正常に読むことが出来ました。 なんなんでしょうか。この現象... ><;

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

エラー36B1は、「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります。 」ですね。 (VCの[ツール]-[エラールックアップ]で調べられます) で、DLLのロードでこのエラーが出るのは大抵、 そのDLLが必要とする他のDLL等が見つからない場合です。 VC2005で提供されるDLL等が(存在しない/パスが通っていない等で) 参照できない状態にあると思われます。 利用しているDLLは"Dependency Walker"等のツールで調べられます。

darkness22
質問者

お礼

早速のご回答ありがとうございます。 Dependency Walkerで確認したところ、 「***.DLL 指定されたファイルが見つかりません。(2)」 と出ていました。 何でコレが出るの??というのは考えてみます^^; ただ、一点疑問が。。 上記の状態でも、VC2005同士であれば正常に動作してしまう のが不思議です。VC2008同士であっても正常に動作します。 これって何かあるんでしょうか?

関連するQ&A