2012-05-04 1 views
0

관리되는 C++ 응용 프로그램에서 C# dll을 호출합니다. C# dll은 C#을 동적으로로드하기 위해 Managed C++ DLL이 필요하기 때문에 사용자 지정 폴더에 있습니다.Assembly :: LoadFrom Managed C++ dll에서 호출했습니다.

이것은 모두 VC++ 2010 v100 및 .net 4.0입니다.

나는 내가 LoadFrom 호출이 성공을 확인하고 MyCSharp.DLL을로드 할 수 있습니다

Assembly::LoadFrom("MyCSharp.dll") 

를 사용하려면, 내 관리되는 C++ DLL 내의 함수가 DLL의 기능에 액세스하려고하지만 경우에, 그것을 다음 중 하나를

가) MyCSharp.DLL 내 응용 프로그램

B와 같은 실행 폴더에 존재하지 않는 경우) 실패 MyCSharp.dll는, 그러나, 지금은있어 실행중인 폴더에있는 경우 성공 두 개의 사본이 메모리에로드되고 나는 분명히 n입니다. my :: LoadFrom 호출에서로드 된 것을 액세스하지 마십시오.

명시 적으로로드 된 C# - dll에 대해 실행중인 함수가 연결되는 것을 막을 수 있는지 확실하지 않습니다.

VC++ managed C++ dll에서 가능한 구성 문제가 의심 스럽습니다.

+0

C++/CLI가 아니라 Managed C++를 의미할까요? 이들은 다른 언어이고 Managed C++는 더 이상 사용되지 않습니다. – Botz3000

+0

답변이 도움이 되었습니까? –

답변

0

Dll이 하위 디렉터리에있는 경우 해당 폴더를 AppDomain의 개인 경로에 추가해야합니다. 내가 아는 한 AppDomain을 만든 후에는 변경할 수 없으므로 <probing> Element을 사용하여 app.config에 추가해야합니다.