- PR -

c++のDLL関数を呼ぶとDllNotFoundExceptionが発生する

1
投稿者投稿内容
みっちー
常連さん
会議室デビュー日: 2006/01/06
投稿数: 22
投稿日時: 2006-01-06 15:47
c++(VC6)で作成したDLL関数を以下のようにDllImport属性で宣言して、使用するとDllNotFoundExceptionが発生してしまいます(同一クラス内で使用)。

[System.Runtime.InteropServices.DllImport("HOGEHOGE.dll")]
private static extern int HogeFunc(IntPtr hInst, IntPtr hWnd, int hoge);

Dllを置く位置は system32フォルダや binフォルダを試したですが、駄目でした。
どこにDllを置けば動作するのでしょうか?それとも、何か根本的に勘違いをしているのでしょうか…。よろしくお願いします。

環境
Windows Server 2003
IIS 6.0
VisualStudio.NET 2003
Webアプリ(C#)
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-01-06 16:03
引用:

c++(VC6)で作成したDLL関数を以下のようにDllImport属性で宣言して、使用するとDllNotFoundExceptionが発生してしまいます(同一クラス内で使用)。



hogehoge.dll が必要としている、別の dll が無い(=見つからない)のでは?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-06 16:07
Warning が発生したままで固めた DLL だと呼び出されない場合があります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2006-01-06 16:19
こんにちは。

引用:

渋木宏明(ひどり)さんの書き込み (2006-01-06 16:03) より:

hogehoge.dll が必要としている、別の dll が無い(=見つからない)のでは?



たしかに、その可能性が高そうですね。
Visual Studio付属ツールの"Dependency Walker"で、hogehoge.dllの依存関係を調べてみてはどうですか。

VS.NET2003だと次のパスに"Dependency Walker"の実行ファイルがあります。

C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Common7\\Tools\\Bin\\Depends.Exe

みっちー
常連さん
会議室デビュー日: 2006/01/06
投稿数: 22
投稿日時: 2006-01-06 18:00
ご指摘の通り、DLLが不足していました。
ありがとうございました。
(Dependency Walkerは、私のPCにはなぜかありませんでした)
1

スキルアップ/キャリアアップ(JOB@IT)