2010-04-27 2 views

답변

1

Visual Studio에서 응용 프로그램 (올바른 프로젝트 설정 포함)을 빌드 할 때 일반적으로 매니페스트 및 사이드 바이 사이드를 통해 링크되는 DLL이 특정 예제로 제공됩니다. 컴파일러에게 코드로 링크하도록 지시하는 이유는 무엇입니까? 당신은 DLL의 lib 디렉토리를 사용할 수 있고, 다음 프라 그마

#pragma comment(lib, "<library name>") 
를 사용하는 경우

특정 DLL에 링크하는 가장 자주 사용되는 방법입니다

+0

매니페스트가 어떻게 구성되는지 자세히 설명해 주시겠습니까? – user198729

0

어, 반드시 먼저 DLL을 이해하려면/... http://www.infernodevelopment.com/how-create-dll-c-using-run-time-dynamic-linking

서면으로 질문을 연결하면 답할 수

주되지 않습니다 : 확실하지 당신이 Cmake와 의미,하지만 당신은 쉽게 ... 예외가되는 당신의 CMakeLists.txt 파일에 링크 라이브러리를 지정할 수있는 DLL은 다음과 같은 이유로 플랫폼에 의존적이다. MSake의 버전을 확인하려면 CMake 스크립트에 뭔가가 필요합니다.

왜 비주얼라이제이션은 비주얼 이후에 VC9 런타임과 함께 제공되며, 누군가 XP를 사용하고 있다면 VS2008/2010에 대한 '재배포 가능 패키지'를 제공 할 수 있습니다.

+0

또한,'cmake'가 VS2008/2010에 '재배포 가능 패키지'를 사용하는 방법을 설명 할 수 있습니까? – user198729

+0

빌드 할 때 Cmake는 재배포 가능 패키지가 필요하지 않지만 CMake는 'nullsoft scriptable install system'과 같은 외부 도구를 사용하여 사용자를위한 설치 프로그램을 만들 수 있습니다. 예 : 'opencv'를 검색하고 설치 프로그램과 소스를 다운로드하십시오. cmake + 소스를 사용하여 설치 프로그램을 다시 만들 수 있습니다. –

1

링크 할 때 .lib 파일을 지정하면 일치하는 .dll이 런타임에 사용되므로 msvcr70.dll을 사용하려는 경우 msvcr70과 연결해야합니다. lib.

1

일반적으로 링크하는 C/C++ 런타임은 사용중인 VisualStudio의 버전에 따라 다릅니다. (msvcr80.dll -> VS2005는 msvcr90.dll -> VS2008 등)

이 작동 방법에 대한 깊은 통찰력과 약간의 트릭이이 blog post에서 읽을 수 araoud 작동합니다.

관련 문제