CHOU

[Visual Studio 2010] 동적 연결 라이브러리 (Dynamic Link Library, DLL) 생성 및 추가 본문

Tech/Technical Tips

[Visual Studio 2010] 동적 연결 라이브러리 (Dynamic Link Library, DLL) 생성 및 추가

chobabo 2014. 8. 28. 18:04

이제까지 주요한 기능을 C#으로 지원했던 ISCSP을 C++을 이용하여 개발할 수 있도록 지원하기로 결정했습니다.

 

오늘은 너무 오래간만에 사용하는 C++언어에 익숙해 질겸 DLL 을 만들고 다른 프로젝트에 추가하는 연습을

해보았습니다.

 

1. 동적 연결 라이브러리(DLL) 생성

 

소스코드와 생성 방법은 MSDN[2]을 참고했습니다.

 

 

 

2. 새로운 프로젝트에 생성된 DLL 추가 및 실행

 

[2]와 같이 새로운 프로젝트 (이름: MyExecRefsDll)을 추가하고, MyExecRefsDll.cpp에 [2]의 소스코드를

삽입하면 아래와 같이 소스파일을 찾을 수 없다고 표기되면서 에러가 발생 합니다.

 

 

위의 에러를 수정하고 이전에 생성된 DLL을 새로운 프로젝트에 추가하기 위해서는 다음과 같은 설정을 해야 합니다.

 

2-1.

 

이전에 생성된 MathFuncsDll.h, MathFuncsDll.lib, MathFuncsDll.dll 을 새로운 프로젝트 폴더에 복사 합니다.

 

복사 할 파일들은 어느 위치나 상관 없지만, 저의 경우 아래와 같이 MathFuncsDll의 이름을 갖는 폴더를 만들고 MathFuncsDll.h, MathFuncsDll.lib, MathFuncsDll.dll을 폴더 안에 저장했습니다.

 

 

 

2-2. 

 

새로운 프로젝트의 Property Pages에 들어가서 Configuration Properties -> C/C++ -> General 을 보면

Additional Include Directories 가 있습니다. 이 부분에 이전에 생성된 헤더파일이 위치한 경로를 입력해 줍니다.

 

 

 

2-3.

 

Configuration Properties -> Linker -> General 의 Additional Library Directories 에 라이브러리가 저장되어 있는

경로를 입력합니다. 저의 경우 헤더파일과 같은 위치에 저장되어 있기 때문에 2-2와 경로가 같습니다. 

 

 

 

2-4.

 

Configuration Properties -> Linker -> Input 의 Additional Dependencies 에 추가할 라이브러리의 .lib 파일을

추가합니다. 이번 예제의 경우 MathFuncsDll.lib 입니다.

 

 

 

2-5.

 

마지막은 추가할 dll 파일의 위치에따라 설정을 해주셔도 되고, 안해주셔도 됩니다.

여러개의 dll 파일을 추가하는 경우, 개발자들은 별도의 폴더를 생성하여 dll 파일을 한곳에 모아두는 경우가 있습니다.

이럴 경우 아래와 같이 Configuration Properties -> Debugging 의 Working Directory을 dll 파일이 있는 폴더의 경로로

지정해 주셔야 합니다.

 

하지만, 추가할 dll파일을 debug 또는 Release 폴더 안에 실행파일(.exe)이 있는 위치에 저장하신다면

디폴트 상태로 Working Directory을 변경하지 않으셔도 됩니다.

 

 

 

위와 같이 새로운 프로젝트의 환경을 설정한 후, 새로운 프로젝트에 [2]의 MyExecRefsDll.cpp을 컴파일하면

아래와 같은 결과를 보실 수 있습니다.

 

 

 

 

 

참고 사이트

 

[1] Integrated Sensor Control Software Platform for Head-feeding combine harvester

 

https://github.com/FiroKyoto/IntegratedSensorControlPlatform

 

[2] Microsoft Developer Network - 연습: 동적 연결 라이브러리 만들기 및 사용 (C++)

 

http://msdn.microsoft.com/ko-kr/library/ms235636.aspx

 

[3] 삼성 소프트웨어 멤버십 - Visual Studio 2010에서 C++ 외부 라이브러리 설정에 대하여

 

http://blog.secmem.org/69