문제

Visual C ++ 2008로 DLL을 만들 때 몇 가지 선택이 있습니다. 나는 만들 수있다 "클래스 라이브러리", 내가 이해하는 것은 실제로 C ++의 CLI (Managed) 확장을 사용하는 .NET 라이브러리를 제공합니다.

원하지 않기 때문에 다른 Visual C ++ Windows 실행 가능 프로젝트에 링크하기 위해 정적 .lib 파일이 필요하다고 가정 했으므로 대신 "Win32 Project"를 선택하고 응용 프로그램 설정 패널에서 C ++ (MFC 없음)를 지정합니다. ) dll.

이것은 내가 정의하는 위치에있는 .cpp 파일이있는 프로젝트를 만듭니다. "DLL 애플리케이션의 내보내기 기능".

이것은 내가 원하는 것도 아닌 것 같습니다. 기본적으로, 내가 찾고있는 것은 C# .net에서 클래스 라이브러리 어셈블리가 될 것과 동등한 기본 C ++입니다. 일부 클래스를 DLL에 포장하고 싶고 .exe 프로젝트가 있습니다. DLL의 클래스를 사용하십시오 DLL 프로젝트 헤더 파일을 포함시키고 .lib와 링크하여 참조를 해결합니다.

이것을하는 일반적인 방법은 무엇입니까?

도움이 되었습니까?

해결책

당신은 그것을 제대로하고 있습니다. 당신이 필요로하는 것은 수업을 표시하는 것입니다 __declSpec (dllexport) 프로젝트 외부에서 사용할 수 있도록합니다. 프로젝트를 구축하면 .dll과 .lib를 모두 생성합니다.

다른 팁

  • 새 프로젝트를 만듭니다
  • Visual C ++ : Win32 : Win32 프로젝트
  • 애플리케이션 설정 DLL을 선택하고 '내보내기 기호'를 확인합니다.

프로젝트를 생성하면 일반적으로 C {Mylib}이라는 수출 된 클래스를 스터브합니다.

C ++ (MFC 없음) DLL을 만드는 것이 옳습니다. 다른 C ++ 코드 (예 : C ++로 작성된 Win32 응용 프로그램)에서 사용하기 위해 해당 DLL에서 내보내는 클래스 및 해당 입력 지점을 생성 할 수 있습니다.

C ++ 이름은 컴파일러에 의해 이상하고 멋진 값으로 자동으로 엉망이되므로 DLL의 클라이언트가 C 프로그램 인 경우와 마찬가지로이를 내보내는 것은 실용적이지 않습니다. 그러나 모든 것이 C ++에 있으면 괜찮을 것입니다.

일부 클래스를 작성하는 경우 클래스를 동적으로 (DLL으로) 연결하도록 선택할 수 있지만 DLL의 기호 정의가 포함 된 가져 오기 라이브러리 (자동으로 작성)가 필요합니다. 응용 프로그램에서 코드에 정적으로 링크하도록 선택할 수도 있습니다.이 경우 DLL의 기호가 아닌 클래스의 실제 객체 코드를 포함하는 정적 라이브러리 (.LIB)로 끝납니다.

물론 DLL의 장점은 라이브러리를 사용하여 여러 응용 프로그램을 작성하면 모두 DLL을 공유 할 수 있다는 것입니다. 정적 라이브러리를 사용하면 각각의 라이브러리 코드 사본이 포함됩니다.

이 기사는 당신이하려는 일에 대해 설명합니다.http://www.codeproject.com/kb/mcpp/usingcppdll.aspx

개인적으로 나는 또한 C ++와 달리 C 함수를 내보내는 것을 선호합니다. 여기서 컴파일러 특정 메소드 이름 장식과 컴파일러 생성 기능을 노출하지 않도록이 포인터를 명시 적으로 명시하게 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top