2011-09-15 5 views
1

소스 (gdal)에서 컴파일 한 DLL이 있습니다. 하나의 소스 파일을 가지고있는 간단한 C++ Win32 콘솔 프로젝트가 있지만 그 DLL에 링크하고 싶습니다. 현재 프로젝트를 실행하려고하면 올바르게 컴파일되지만 DLL을 찾을 수 없다고합니다. DLL을 DLL과 동일한 디렉토리로 이동하면 exe가 실행됩니다. 내 출력 EXE를 DLL을 포함시켜 하나의 파일을 다른 시스템으로 옮기고 EXE로 DLL을 보낼 필요없이 실행할 수있는 방법이 있습니까?VS2010 C++ 프로젝트에 DLL을 추가하는 방법

어떻게 이것을 VS2010에서 만들 수 있습니까?

답변

0

정적 라이브러리 (.lib)로 다시 컴파일 된 다음 정적으로 링크 된 .dll의 원본 소스 코드가 없으면 동적 링크 라이브러리를 "포함"할 수있는 방법이 없다고 생각합니다. 실행 파일.

+1

있습니다. DLL을 실행 파일에 리소스로 포함시키고, 시작할 때 디스크로 가져 와서 동적으로로드하십시오! * 제발 하지마. *. –

+0

더티! 나는 그것을 좋아한다! – aardvarkk

0

응용 프로그램을 실행하려면 경로 또는 현재 디렉터리에 DLL이 있어야합니다. 이것이 DLL과 함께 작동하는 방법입니다.

정적 라이브러리의 경우 연결하면 라이브러리 코드가 응용 프로그램에 포함됩니다. DLL을 사용할 수 없거나 사용하지 않으려는 경우 DLL을 정적 라이브러리로 변경할 수 있습니다.

+0

타사 도구 (이 경우 gdal)의 라이센스를 반드시 읽으십시오. 일부 라이센스는 정적 링크에 적절하지 않습니다. –

+0

이것은 MIT 스타일이므로 괜찮을 것입니다. –

+0

사실, 정적 라이브러리로 사용하려고 시도 할 수있는 다른 문제가있을 수 있습니다. DLL을 exe로 유지하는 것이 가장 쉬운 방법입니다. – crashmstr

0

소스에서 컴파일하기 때문에 원본 파일을 프로젝트에 추가하고 실행 파일에 바로 빌드 할 수 있습니다.

0

DLL을 실행 파일의 경로에 복사하는 스크립트를 실행하는 Visual Studio 프로젝트에서 사후 빌드 이벤트를 만들 수 있습니다.

그런 다음 응용 프로그램을 배포 할 때 설치 관리자가 DLL 관리를 처리 할 수 ​​있습니다.

관련 문제