2009-06-12 2 views
4

Visual C#에서 아무런 문제없이 사용하고있는 DLL을 가지고 있습니다 (단순히 참조를 추가하고 네임 스페이스를 사용함). 이제 C++을 배우려고하는데 DLL에서 네임 스페이스를 참조하는 방법을 이해하지 못합니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '참조'를 선택하고 '새 참조 추가'를 클릭하면 비어있는 '프로젝트'창이 나타납니다. 내가 뭘 놓치고 있니?Visual Studio C++에서 DLL 사용

답변

6

C++은 DLL 참조를 처리 할 때 C#/VB.Net과 다른입니다. 입니다. C#에서 참조를 수행하는 데 필요한 모든 것은 내부에있는 구조를 설명하는 메타 데이터를 포함하기 때문에 DLL입니다. 컴파일러는이 정보를 다른 프로젝트에서 사용할 수 있도록 읽을 수 있습니다.

C++에는 DLL에 메타 데이터라는 개념이 없으므로 C#에서는 메타 개념이 없습니다. 대신 명시 적으로 메타 데이터를 헤더 파일 형태로 제공해야합니다. 이러한 파일은 C++ 프로젝트에 포함되어 있으며 DLL은 런타임에로드됩니다. C + +에서 말하기 위해 실제로 "참조를 추가"하지는 않지만 대신 헤더 파일을 포함하십시오.

헤더 파일이 포함되면, 당신은 다음 CPP 파일에

using namespace SomeNamespace; 
+1

Ew, 네임 스페이스 사용 : | – GManNickG

+0

@Gman, 헤더 파일에서 수행되는 경우는 정말 악합니다. 나는 "당신의 CPP에서"파일을 말하려고했지만 C++을 대신 입력했습니다. – JaredPar

+0

'네임 스페이스 사용'은 다른 모든 것과 마찬가지로 올바르게 또는 잘못 사용될 수있는 도구입니다. '네임 스페이스를 사용하여'헤더 파일에 - 나쁜. C++ 파일에서 '네임 스페이스 사용'- 일반적으로 괜찮습니다. 그것이 문제를 일으킬 때까지, 당신은 단지 그것을하는 것을 멈춘다. –

0

편집을을 포함하여 네임 스페이스에 액세스 할 수 있습니다 : 당신이 관리되지 않는 C++를 사용하는 경우 이전의 대답은 더 도움이 될 것입니다; 나는 당신이 관리되는 C++을 목표로 삼고 있다는 C# 레퍼런스 때문에 추측했다.

'참조 추가'대화 상자에는 일련의 탭이 있어야합니다. '프로젝트'는 현재 솔루션의 프로젝트를 나열합니다. .NET은 GAC에 설치된 라이브러리를 나열하고 '찾아보기'를 사용하여 직접 DLL을 찾을 수 있습니다.

DLL에 대한 참조 만 추가하려는 경우 '찾아보기'로 수행 할 수 있어야합니다. 소스가있는 프로젝트의 결과물 인 경우 프로젝트를 솔루션에 추가하면 '프로젝트'탭에 해당 프로젝트가 표시됩니다.

이 방법이 도움이되지 않는다면 사용하고있는 Visual Studio 버전과 사용하려는 DLL은 어디에 있습니까?

3

우선 C# 응용 프로그램에서 사용한 것과 동일한 DLL을 사용하려는 경우 순수 네이티브 C++를 사용하는 경우 해당 DLL을 호출하기가 쉽지 않습니다. 문제는 C#에서 참조하는 DLL이 .NET 프레임 워크 (모든 C#, VB.NET 및 C++/CLI 어셈블리가 "Managed"DLL 임)에 의존하여 실행된다는 것입니다. C++에서 "관리되는"코드를 쉽게 참조 할 수있는 방법은 Visual Studio의 C++ 프로젝트 마법사에서 "CLR"섹션에서 선택하여 관리되는 C++ 프로젝트 (AKA C++/CLI)를 작성하는 것입니다. 그렇지 않으면 관리되는 DLL에 액세스하는 유일한 방법은 COM에 노출시키고 COM을 사용하여 개체에 액세스하는 것입니다.