2010-07-30 3 views
2

네이티브 C에서 DLL로 .NET 3.5 관리 코드를 호출 할 수 있어야합니다. .h 또는 .lib 파일이 제공되지 않았습니다.
C 호환 인터페이스를 제공하는 C++ DLL을 만들려고했지만 프로젝트에서 사용해야하는 DLL을 포함 할 수없는 것 같습니다.네이티브 C에서 .NET 관리 코드 호출

네이티브 C에서 .NET 관리 코드를 호출 할 수있는 방법이 있습니까?

+1

의 중복 가능성 [C는 #/C++ DLL의 조언이 필요하십니까] (http://stackoverflow.com/questions/3310667/need-cc-dll-advice) [C++/CLI가 사용할 수의 –

+0

가능한 중복 전화 .NET 코드 네이티브 C++ 응용 프로그램에서?] (http://stackoverflow.com/questions/1058897/can-c-cli-be-used-to-call-net-code-from-native-c-applications) – kiamlaluno

답변

6

순수 관리 코드는 헤더 나 라이브러리를 제공하지 않습니다. 컴파일러가 적절한 API를 결정하기 위해 대신 .NET 프레임 워크의 메타 데이터 기능을 사용합니다.

C에서 관리되는 어셈블리를 사용하는 가장 쉬운 방법은 C++/CLI를 사용하여 관리되는 코드를 네이티브 래퍼로 만드는 것입니다. 그런 다음이 DLL에서 C API를 노출하고 다른 C/C++ DLL과 마찬가지로 호출 할 수 있습니다.

+0

좋아 , 정보 주셔서 감사합니다. Visual Studio 2008에서이 작업을 수행하기 위해 클래스 라이브러리 프로젝트를 만들겠습니까? –

3

Unmanaged Exports을 살펴보고 NuGet package으로 표시 할 수 있습니다. 다음은 저자에 따른 설명입니다.

관리 할 코드에서 기본 응용 프로그램으로 함수를 내보낼 수있는 컴파일 타임 라이브러리 세트 (배포 할 항목 없음) 및 빌드 작업. 즉, C# 또는 F #과 같은 관리되는 언어로 된 플러그인을 만들 수 있습니다 (예 : 메모장 + +). 너겟 패키지 만 있으면됩니다. [DllExport]로 메소드를 표시하고 x86, x64 또는 ia64 용으로 빌드하면됩니다.