2009-07-10 3 views
2

저는 팀에 전달할 C++ 라이브러리를 개발 중입니다. 라이브러리에는 여러 가지 메소드가있는 클래스가 하나만 있습니다.Visual Studio 2005에서 DLL을 만듭니다.

그래서 클래스 정의 파일 (X.cpp)과 해당 클래스 선언 파일 (X.h)을 개발했습니다. 여기

내 질문입니다 -

  1. 비주얼 스튜디오 2005, DLL로이 라이브러리를 구축 할 수있는 가장 똑 바른 앞으로 방법입니다 무슨, 그런 내가 얻을 다음 파일을 X.lib : 내 팀에 전달할 수 있도록 내 팀에 전달할 수 있습니다. X.dll : 런타임에 내 팀에 전달할 수 있습니다.

  2. 정적 라이브러리 방식으로 전환해야합니까? ? 그렇다면 Visual Studio 2005에서이 작업을 수행하려면 어떻게해야합니까? & 내 팀에 전달할 수있는 X.lib 파일을 제공합니까?

모든 설명이나 참조는 대단히 환영합니다.

대단히 감사합니다.

+0

구성 유형을 "동적 격언 (.dll)"으로 설정 했습니까? –

답변

1

설명에서 이미 Visual C++ 프로젝트가있는 것 같습니다 (내가 틀렸다면 수정하십시오). 그렇다면 프로젝트 속성에 들어가면 "일반"아래에서 "구성 유형"을 찾을 수 있습니다 - 필요에 따라 "정적 라이브러리"또는 "동적 라이브러리"로 전환하십시오.

"정적 라이브러리"를 선택하면 바로 사용할 수있는 .lib 파일 만 제공됩니다.

"동적 라이브러리"를 선택하고 DLL에서 함수를 내 보낸 경우 (예 : __declspec(dllexport)으로 표시) 내보내기 .lib가 자동으로 생성됩니다.

당신이하고있는 일의 특성을 알지 못하면 어떤 옵션이 더 바람직한 지 알기가 어렵습니다. 일반적으로 정적 라이브러리를 사용하는 것이 좋습니다. 일반적으로 충분하기 때문에 DLL (특히 C++ 심볼을 내보내는 라이브러리)을 다룰 때 더 많은 트랩이 있습니다.

+0

그리고 동적 라이브러리를 사용할 때 가능한 런타임 라이브러리 충돌을 기억해야합니다. –

2

DLL을 만드는 가장 쉬운 방법은 새로 만들기 -> 프로젝트 -> Win32 콘솔 응용 프로그램입니다. 그런 다음 대화 상자에서 DLL을 선택하고 "심볼 내보내기"를 선택하십시오. 이렇게하면 클래스를 내보내는 방법을 보여주는 .h 및 .cpp 파일로 dll이 합성됩니다. 이 .h/.cpp를 제거 할 수 있지만 먼저 클래스를 가져 와서 적절한 #ifndef 문을 추가하십시오. 지금까지 DLL과 정적 라이브러리가 하나의 작은 클래스 인 경우 정적 라이브러리를 사용하는 것이 더 낫지 만 간결하고 간결하며 다른 종속성을 추가하지 않아도됩니다 귀하의 제품과 함께. 새 DLL을 바꿀 수 있기 때문에 .cpp 파일의 코드가 자주 변경되는 경우 (예 : 함수 구현) DLL이 유용합니다.

0

나는 너무 어려울 때가있다. C++ Project Properties ...에서 어려운 위치를 찾을 수 없기 때문에 나는 a blog post이라는 내 자신의 정신으로 계산했다.

HTH는

1

나는 당신의 팀은 당신이 라이브러리의 새로운 버전을 배포 할 때 자신의 코드를 다시 컴파일 할 필요가 없기 때문에 대부분의 경우, DLL이 더 나은 선택이 정적 lib 디렉토리보다,라고 생각합니다.

관련 문제