본문 바로가기

C

dll 만들기

구성속성 - 일반에서 구성 형식을 .dll 혹은 .lib로 변경 가능

프로젝트 생성시에도 설정 가능



extern "C" 는 호환성 때문에 걍 붙이는 거라고 들었음

중요한 것은 __declspec(dllexport) 와 __declspec(dllinport)

ifdef로 define을 다르게 하여 익스포트와 임포트 기능을 프로젝트에 따라 다르게 설정 가능


C/C++ - 전처리기에서 define 설정 가능


빌드 이벤트 - 빌드 후 이벤트 - 명령줄에서 명령을 입력하여 만들어진 .lib와 .dll을 다른 폴더에 복사 가능

이를 이용해 필요한 파일만 백업

dll 프로젝트는 dll과 lib가 Debug폴더 혹은 Release폴더에 생김

헤더파일은 선언을 입력해두고 사용해야할 함수나 설정 등을 알기위해 넘겨줌



리소스도 dll로 만들 수 있다.

링커 - 명령줄에 /NOENTITY 를 입력해야한다.

안그럼 오류남(진입 지점이 없기 때문에)

그리고 빌드하면 dll이 생성됨

리소스는 아이디가 존재하므로 아이디를 정의한 헤더를 넘겨줘야함

만들 때 아이디가 필요하므로...


리소스를 불러올 때는 LoadLibrary(dll path)를 사용

그리고 해당 리소스에 맞게 생성



dll을 사용하는 프로젝트에서는

C/C++ - 일반 - 추가 포함 디렉터리를 설정하여 헤더파일을 가져다 쓸 수 있음

상대 경로로 하여 다른 환경에서도 적용할 수 있도록 함

링커 - 일반 추가 라이브러리 디렉터리를 설정하여 lib파일을 가져다 쓸 수 있음

상대 경로로 하여 다른 환경에서도 적용할 수 있도록 함

링커 - 입력 - 추가 종속성 탭에서 사용할 라이브러리 파일을 지정한다.

빌드 이벤트 - 빌드 전 이벤트 - 명령줄

필요한 파일을 프로젝트에 복사하여 사용

빌드 이벤트 - 빌드 후 이벤트 - 명령줄

빌드 후 배포 할 파일만 백업