2012-05-04 13 views
0

私はマネージC++アプリケーションからC#dllを呼び出しています。 C#dllはカスタムフォルダに入っているので、C#を動的にロードするにはManaged C++ dllが必要です。Assembly :: LoadFromはManaged C++ DLLから呼び出されました

これはすべてVC++ 2010 v100および.net 4.0です。

私はそれが、私の管理C++のdll内の関数は、そのDLLの機能のいずれかにアクセスしようとただしたときに、LoadFrom呼び出しがMyCSharp.DLLを成功し、ロード見ることができます

Assembly::LoadFrom("MyCSharp.dll") 

を使用します次のいずれか

MyCSharp.DLLが自分のアプリケーション

Bと同じ実行フォルダ内に存在しない場合a)の失敗)成功MyCSharp.dllが実行したフォルダに存在する場合は、しかし、今私が持っています2つのコピーがメモリにロードされ、私は明らかにnですmy :: LoadFromコールからロードされたものにアクセスすることはできません。

実行関数が明示的に読み込まれたC# - dllとのリンクを妨げているのかどうかわかりません。

私が気付いていないVC++の管理下にあるC++ dllの設定に問題があると思われます。

+0

C++/CLIではなくManaged C++を使用していますか?それらは異なる言語であり、Managed C++は非推奨です。 – Botz3000

+0

回答が役に立ちましたか? –

答えて

0

Dllがサブディレクトリにある場合、そのフォルダをAppDomainのプライベートパスに追加する必要があります。私が知る限り、AppDomainが作成された後は変更できないので、<probing> Elementを使用してapp.configに追加する必要があります。

関連する問題