본문 바로가기
C++ 200제/코딩 IT 정보

C++ Builder6에서 비주얼스튜디오 2017 dll 사용 (vc++ <-> 볼랜드)

by vicddory 2018. 11. 16.

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(동적 연결 라이브러리)를 선택해 프로젝트를 생성합니다.


C++ Builder6 DLL 만들기, 비주얼스튜디오 2017 dll 연동 (1)[표준 라이브러리 프로그래밍 소스 코드]

비주얼스튜디오로 생성된 프로젝트를 살펴보면, 프로젝트 이름의 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++ builder dll (1)[표준 라이브러리 프로그래밍 소스 코드]


그리고 C++ Builder6에서 사용하려면 비주얼스튜디오2017로 만든 VC++ DLL을 변환해야 합니다. VisualStudio로 생성된 dll은 바로 사용할 수 없으니 아래처럼 빌드 이벤트 - 빌드 후 이벤트에 아래 명령어를 추가합니다.


1
call implib C:\folder\Dll1.lib C:\folder\Dll1.dll
cs


정상적으로 dll 빌드가 완료되면 마지막에 Borland Implib 결과도 확인할 수 있습니다.


C++ Builder6에서 비주얼스튜디오 2017 dll 사용 (vc++ - 볼랜드)[표준 라이브러리 프로그래밍 소스 코드]

C++ Builder에서 VC++ DLL 사용하기


임의의 씨쁠쁠 빌더 프로젝트를 생성합니다. 그리고 Project - Add to Project를 선택해 비주얼스튜디오2017에서 생성한 lib 파일을 추가합니다. 여기서 추가하는 lib 파일은 Implib 명령어를 통해 새롭게 생성된 파일입니다. VisualStudio에서 만든 lib 파일은 그대로 사용할 수 없습니다.


볼랜드 dll c++ (1)[표준 라이브러리 프로그래밍 소스 코드]


실제로 C++ Builder 프로젝트에 추가된 것인지는 바로 아래 메뉴 Remove from Project에서 확인합니다.


vc++ dll 볼랜드 연동 (1)[표준 라이브러리 프로그래밍 소스 코드]


볼랜드 vc++ 라이브러리 (1)[표준 라이브러리 프로그래밍 소스 코드]


정상적으로 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++ <-> 볼랜드)

댓글