2009-07-21 14 views
1

Windows XPシステムでは、C#アセンブリでコードを呼び出すMangaged C++ライブラリを作成しています。残念ながら、できるだけ早く私は(私はXPのクラッシュダイアログからこれをコピーした)マネージドC++ライブラリは、このエラーで失敗実行し、C#アセンブリ内のシンボルを参照し始めると:Managed C++ DLLからC#アセンブリを使用するとクラッシュする

EventType : clr20r3 
P1 : treeviewdemo.exe 
P2 : 0.0.0.0 
P3 : 4a5d6d62 
P4 : system.windows.forms 
P5 : 2.0.0.0 
P6 : 4889dee7 
P7 : 12fc  
P8 : ac 
P9 : system.io.filenotfoundexception  

うまく管理C++ライブラリは、単に基本的に次のとおりです。

#using "C:\\MyCSharpAssembly.dll"; 

__declspec(dllexport) void callMangagedCode() { 
    ManagedObject ^o = nullptr; 
} 

「#using」自体は、私は問題を取得し、任意の問題を引き起こすように見えるが、できるだけ早く私は、シンボルを使用し始めるとC#のDLLを形成しません。誰が何が起こっているのか分かっていますか?

system.io.filenotfoundexceptionは、DLLが見つからないと思いますが、探している場所や場所がわかりません。

+0

別のC#アプリケーションからメソッドを呼び出そうとしましたか?エラーが再現可能であれば、より良い例外情報を取得する。 – cwap

答えて

5

MyCSharpAssembly.dllの依存関係はすべて同じパスで利用できますか?あなたがわからない場合は、ILDasmツールにCシャープアセンブリをロードして、その依存関係を調べてください。

健全性のチェックとして、このCシャープDLLを別のCシャープ実行可能ファイルからロードできるかどうかを確認してください。

+0

ありがとう!それは本当にMyCSharpAssembly.dllの依存関係の1つと判明しました。しかし、問題はもっと複雑でした。依存関係がDLLと同じパスにあるだけではなく、.exeファイルのパスに入る必要がありました(これは 'APPBASE'プロパティに関連していると思います)。私は正しい方向に私を指して以来、この答えを受け入れる。 –

0

ファイルが見つかりませんか?

C#アセンブリが見つかりませんでしたか?

は、WindowsまたはSYSTEM32にコピーし、障害が、

0

を登録しようとした場合

を試していますが、C#のアセンブリのソースコードへのアクセス権を持っていますか?デバッガでマネージドC++コードを実行できますか?例外のスタックトレースを見ることは価値があります。例外が発生したときに何が起きているかについて、より多くのヒントを与えるかもしれません。

私はクラッシュがあなたの行っている操作に関連している可能性があると思います。 Aamirが言及するように、他の可能性はC#アセンブリの依存性かもしれません...

関連する問題