2009-10-06 2 views
1

나는 C++/CLI로 작성된 프로젝트를 가지고있다. 거기에는 관리 코드에있는 일부 유형과 완전히 원시 코드에있는 유형이 있습니다. 예를 들어 .Net 프레임 워크의 모든 버전이 설치되어 있지 않은 컴퓨터에서 생성 된 DLL을 가지고 있다고 가정 할 때 다른 네이티브 응용 프로그램이 "혼합 모드"DLL과 연결되어 네이티브 형식 만 사용하는 방법이 있습니까? 나는 "/ clr"스위치를 추가하는 순간, 내 Dll은 자동으로 여러 .NET Framework Dll (mscorjit, mscoree 등)에 의존하며, 실제로 정의 된 100 % 기본 유형을 사용하려고 할 때, 응용 프로그램은 여전히 ​​.Net Framework Dll을로드하려고합니다 (비록 코드의 해당 부분에서 프레임 워크를 사용하지 않지만).
그런 경우 이러한 DLL을로드하는 것을 피할 수 있습니까? (내가 보았 듯이, 다른 옵션은 네이티브 타입을 모두 포함하는 네이티브 프로젝트를 생성하는 것입니다).C++/CLI 프로젝트에서 .Net Dll을로드하지 마십시오?

감사

답변

3

당신이 혼합 모드 어셈블리 (/ CLR)을로드 호, DllMain 실행 직후의 .cctor 실행하고 이미 응용 프로그램에 대한 설치되어 있지 않은 경우, 프레임 워크를 초기화합니다.

관리되는 API가 필요한 기능을 호출하자마자 큰 피해가 발생합니다. 자세한 내용은 MSDN의 "Initialization of Mixed Assemblies"을 참조하십시오.

네이티브 API를 별도의 DLL로 만들고 혼합 모드 어셈블리를 별도의 프로젝트로 만들면 필요할 경우 별도로로드 할 수 있습니다.

관련 문제