- 締切済み
VC2005で作成したDLLファイルをVC2008で動的リンク(LoadLibrary)する方法
「VC2005 Standard Edition」で作成したDLLファイルを、 「VC2008 Express Edition」で作成したコンソールアプリケーション から、LoadLibrary("VC2005で作成したDLLファイル")すると 失敗してしまいます。 GetLastErrorでエラーを取得すると、"36B1"が表示されます。 (このエラーは何か調べても見つかりませんでした) 何が原因かご存知の方がいらっしゃいましたら、 ご教授頂けませんでしょうか。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- realizewor
- ベストアンサー率0% (0/0)
MFCは使われていないということで良いですか?MFCを使っていると、基本互換が取れないと思ってください。
- nda23
- ベストアンサー率54% (777/1415)
(1)テキストファイルに以下の記述を行う。 Library xxx ← DLLファイルの名前 Exports aaa ← 関数名 (2)リンクオプションを追加する。 /def xxx.txt ← 上記テキストファイルの名前
お礼
ありがとうございます。 リンクすることができました。
- Wr5
- ベストアンサー率53% (2173/4061)
>上記の状態でも、VC2005同士であれば正常に動作してしまう >のが不思議です。VC2008同士であっても正常に動作します。 >これって何かあるんでしょうか? VC2008 Express Editionが入っているマシンにVS2005のランタイムをインストールしてありますか?
補足
リンクの問題が解決しました。 しかし、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)
エラー36B1は、「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります。 」ですね。 (VCの[ツール]-[エラールックアップ]で調べられます) で、DLLのロードでこのエラーが出るのは大抵、 そのDLLが必要とする他のDLL等が見つからない場合です。 VC2005で提供されるDLL等が(存在しない/パスが通っていない等で) 参照できない状態にあると思われます。 利用しているDLLは"Dependency Walker"等のツールで調べられます。
お礼
早速のご回答ありがとうございます。 Dependency Walkerで確認したところ、 「***.DLL 指定されたファイルが見つかりません。(2)」 と出ていました。 何でコレが出るの??というのは考えてみます^^; ただ、一点疑問が。。 上記の状態でも、VC2005同士であれば正常に動作してしまう のが不思議です。VC2008同士であっても正常に動作します。 これって何かあるんでしょうか?
お礼
はい、使用しておりません。