2010-06-15 7 views
1

우리 신청서에서 두 번의 전화 요청이있었습니다. 이 두 dlls은 다른 그룹 및 다른 회사 출신입니다. 관리 및 비 관리에 대해 조금 읽었습니다. 나는 관리 전화를하는 것을 선호합니다. 그러나 사용 또는 관리되지 않는 사용 여부는 발신자 만의 결정인지 또는 피 호출자에 따라 결정됩니까? 모든 dll은 관리 코드로 호출 할 수 있습니까? 피 호출자도 요소 인 경우이 DLL이 관리되는 코드로 호출 될 수 있음을 어떻게 알 수 있습니까? DLL이 관리 코드로 작성되어있는 경우C# 관리 dll 호출 또는 관리되지 않는 dll 호출?

답변

1

그것은 관리 호출 수 있습니다. 그렇지 않으면 관리되지 않는 전화를해야합니다. 두 부분을 모두 관리 된 통화로 관리해야합니다.

+0

는 어떻게 DLL이 관리 코드로 작성 알 수 있습니까? 그 결과의 어떤 지시자라도 나에게 보낸다? – 5YrsLaterDBA

+1

구성 요소의 설명서는 대부분 좋은 지표입니다. – GvS

+0

@ 5YrsLaterDBA : 오른쪽 마우스 버튼을 클릭하고 속성을 수행하고 버전 탭에 어셈블리 버전이 있는지 확인하십시오. 그렇다면 아마 관리 할 수 ​​있습니다. Visual Studio에서 관리 DLL이나 COM 구성 요소가 아닌 경우 해당 구성 요소에 대한 참조를 추가하면됩니다. –

1

나는 .Net dll 또는 .Net 외의 호출을 의미합니다. 당신이 모두 같은 닷넷 데이터 유형이 있고 의미가 같은 전화를 같이 제어되지 않는 코드베이스와 상호 운용 할 때

관리 코드는 위험의 수준을 제거합니다.

당신이 배열의 순서와 방법 스택에 객체 참조를 밀어하는 방법에 문제가있을 수 있습니다 닷넷되지 않는 경우 DLL이에 기록 된 어떤 언어 따라. 또한 주어진 객체/기본 값에서 직접 돌연변이를 수행하는 경우 DLL을 안전하게 호출하기 위해 객체를 메모리에 고정해야 할 수도 있습니다.

1

당신은 확실히 당신이 사용하려고하는 DLL에 대한 자세한 정보가 필요.

DLL이 관리되지 않는 경우

, 당신은/해당 P 쓰기 통화를 할 정보를 호출 할 수 있도록 수출 기능에 대한 자세한 정보가 필요 할 것입니다. 예를 들어 this MSDN Article 또는 http://pinvoke.net을 참조하십시오.

DLL이는 COM을 기반으로 또는 .NET는, 당신은 Visual Studio를 통해 프로젝트에 대한 참조를 추가 할 수 있으며 직접 액세스하는 경우.