2010-01-26 4 views
4

.h 파일, 두 개의 .lib 파일, .dll 파일 및 하드웨어 공급 업체의 작은 테스트 프로젝트가있어 하드웨어와 통신합니다..lib를 포함 할시기와 .dll 또는 모두를 포함 할 때

테스트 프로젝트를 컴파일하고 실행하면 정상적으로 작동합니다. 주목할만한 점은 .dll을 사용하지 않는다는 것입니다. 나는 dll-directory를 던져 버릴 수 있으며 모든 내용은 떨어져있다. 모든 것이 잘 돌아 간다.

일을 시작하려면 간단히 코드의 통신 부분 (연결, 연결 해제 및 명령 보내기)을 프로젝트에 복사하십시오. 이것은 실제로 당신이 할 수있는 모든 것입니다. 나는 .h 파일을 포함하고 .lib 파일을 포함하는 디렉토리를 가리켰다. 작은 테스트 프로젝트 에서처럼. 모두 컴파일되지만 프로젝트를 실행하려고하면 .dll 파일이 누락되었다고 불평합니다.

아무도 무슨 일이 일어 났는지 설명 할 수 있습니까? libs 및 dll은 어떻게 작동합니까?

모든 이것은 Windows, VS2005에 있습니다. .vcproj 파일을 비교했는데 중요한 차이점을 찾을 수 없었습니다.

+0

프로그래밍 관련 질문에 대해보다 자세하게 설명되어있는 stackoverflow.com에서이 질문을 시도해 보겠습니다. – Kez

+0

DLL을 실행 파일과 동일한 디렉터리에 넣으십시오. –

+0

내 질문에 어떻게 대답하는지 이해가 안됩니다. 제발 설명해 주실 래요. – AnnaR

답변

2

테스트 프로젝트는 statically입니다. lib는 exe에 포함되어 있습니다.

프로젝트가 dynamically이고 DLL이 참조되어 런타임에 필요합니다.

자세한 내용은 Stack Overflow question을 참조하십시오.

+0

VS에서 정적으로 (또는 동적으로) 링크 된 프로젝트를 원한다고 어디에서 설정합니까? – AnnaR

+0

프로젝트를 만들 때이를 설정해야합니다. 이를 변경할 수는 있지만 프로젝트 파일을 편집해야합니다. – ChrisF

+0

예! 행복하게 프로젝트 파일을 수정하겠습니다! 나는 무엇을 바꾸어야 하는지를 알아야합니다. – AnnaR

2

기본적으로 대답은 실행 파일에 정적 또는 동적 링크를 사용할지 여부에 따라 달라집니다.

정적 연결을 사용하면 .h 및 .lib 파일은 필요하지만 컴파일 및 링크 할 .dll 파일은 필요하지 않습니다. 실행 파일은 커지지 만 실행 중에 .h/.lib/.dll 파일은 필요하지 않습니다.

동적 연결을 사용하면 컴파일 및 링크하기 위해 .h 파일 만 있으면됩니다. 실행 파일은 작지만 런타임 중에 .dll 파일 중 하나 또는 모두가 필요합니다. (이것은 실행 모듈을 허용하게 연결 고정에서 .DLL 또는 .exe 파일 중 다르다

"동적 링크 -

비주얼 스튜디오 관점에서 이에 대한 상세한 치료

, http://msdn.microsoft.com/en-us/library/1ez7dh12.aspx 확인해) DLL 함수에 대한 실행 코드를 찾기 위해 런타임에 필요한 정보 만 포함하려면 정적 링크에서 링커는 정적 링크 라이브러리에서 참조 된 모든 함수를 가져 와서 코드와 함께 실행 파일에 저장합니다. "

관련 문제