C++ Builder6에서 비주얼스튜디오 2017 dll 사용 (vc++ <-> 볼랜드)
개발환경
- VisualStudio 2017 (vc++ 비주얼 스튜디오 64비트)
- 볼랜드 C++ 빌더 6
윈도우 vc++(비주얼스튜디오2017)에서 제작한 dll을 Borland C++ Builder6에서 사용하는 방법입니다.
VC++ DLL 만들기
볼랜드 C++ 빌더6에서는 Release 형태의 32비트 dll만 사용할 수 있다는 점을 먼저 기억해 주세요. 자, 시작합니다.
윈도우7 64비트, 비주얼스튜디오 2017을 이용합니다. 아래처럼 VisualStudio 메뉴 - 새 프로젝트에서 Visual C++ - Windows 데스크톱 - DLL(동적 연결 라이브러리)를 선택해 프로젝트를 생성합니다.
[표준 라이브러리 프로그래밍 소스 코드]
비주얼스튜디오로 생성된 프로젝트를 살펴보면, 프로젝트 이름의 cpp 파일 등이 있는데 실제 코드는 프로젝트 이름.dll에 작성합니다. 예를 들어 프로젝트 이름이 Dll1이라면 Dll1.cpp 파일에 코딩하는 겁니다.
볼랜드 C++ 빌더(Builder)에서 사용할 함수를 아래처럼 작성합니다.
1 2 3 4 5 6 7 | extern "C" __declspec(dllexport) INT32 __stdcall test(INT32 number) { number++; return number; } | cs |
그리고 빌드하기 전에 프로젝트 속성을 살펴봅니다.
VisualStudio 속성 - C/C++ - 모든 옵션에서 아래 그림과 같이 두 속성을 설정합니다.
디버그 정보 형식 - 프로그램 데이터베이스(/Zi)
런타임 라이브러리 - 다중 스레드 DLL(/MD)
[표준 라이브러리 프로그래밍 소스 코드]
그리고 C++ Builder6에서 사용하려면 비주얼스튜디오2017로 만든 VC++ DLL을 변환해야 합니다. VisualStudio로 생성된 dll은 바로 사용할 수 없으니 아래처럼 빌드 이벤트 - 빌드 후 이벤트에 아래 명령어를 추가합니다.
1 | call implib C:\folder\Dll1.lib C:\folder\Dll1.dll | cs |
정상적으로 dll 빌드가 완료되면 마지막에 Borland Implib 결과도 확인할 수 있습니다.
[표준 라이브러리 프로그래밍 소스 코드]
C++ Builder에서 VC++ DLL 사용하기
임의의 씨쁠쁠 빌더 프로젝트를 생성합니다. 그리고 Project - Add to Project를 선택해 비주얼스튜디오2017에서 생성한 lib 파일을 추가합니다. 여기서 추가하는 lib 파일은 Implib 명령어를 통해 새롭게 생성된 파일입니다. VisualStudio에서 만든 lib 파일은 그대로 사용할 수 없습니다.
[표준 라이브러리 프로그래밍 소스 코드]
실제로 C++ Builder 프로젝트에 추가된 것인지는 바로 아래 메뉴 Remove from Project에서 확인합니다.
[표준 라이브러리 프로그래밍 소스 코드]
[표준 라이브러리 프로그래밍 소스 코드]
정상적으로 lib 파일이 추가되었다면 리스트에서 확인할 수 있어요.
DLL 사용하는 소스 코드 작성
앞서, VisualStudio 2017 프로젝트에서 생성한 똑같은 코드를 추가합니다.
1 | extern "C" __declspec(dllexport) INT32 __stdcall test(INT32 number); | cs |
CPP 상단이나 헤더 파일 어느 곳에 추가해도 상관없습니다. 그리고 원하는 지점에서 test 함수에 정수를 전달하여 결과값을 받습니다. 그러면 dll 연동 테스트는 완료됩니다.
자료형은 반드시 INT32로 해야합니다. C++ Builder6 자체가 32비트 전용이라 오버플로우를 미리 방지하는 겁니다. 여기까지가 윈도우7 환경에서 DLL 제작 후 연동하는 과정이었습니다.
C++ Builder6에서 비주얼스튜디오 2017 dll 사용 (vc++ <-> 볼랜드)
댓글