본문 바로가기
호구지책/VB6

[VB6] C++과의 데이터 타입 대응표 - C++ 과 VB6의 호환성 문제

by 하늘의흐름 2017. 12. 5.
반응형

DLL 호출 시에 변수를 어떻게 잡아줘야 할지 혼선이 있었다.


변수의 범위에 따라서 C++ 과 VB6 데이터 타입을 대응시킬 수 있을 것 같다.


Byte 0~255

Integer -32768 ~ 32768

Long -2,147,483,648 ~ 2,147,483,648

Single 1.401298E-45 ~ 3.40282E38 음수 -3.40282E38 ~ -1.401298E-45


범위 문제가 아닌 것 같다. 왜 그런지는 잘 모르겠다.

C++ 과 VB6의 호환성 문제 쉽지 않다..


VB <- C++ 대응 타입

Byte <- byte

Integer <- short, bool

Long <- int, bool

Double <- float, double

String <- char, uchar wchar_t



ByVal과 ByRef

VB6에서 문자열변수(char*, uchar, wchar_t 등등)은 ByRef로 받을 수 없고,

ByVal로만 받을 수 있다. 대신에 변수를 사용하기 전에

공백을 넣어서 초기화 해줘야 한다.


구조체 변수는 안에 문자열 변수가 있다고 하더라도 ByRef로 받아줘야

처리가 가능하다.



그외에

- bool 형은 Integer 도 되고, Long도 가능하다. 왜 그런지는 모르겠다...;;

- void 형을 리턴하는 DLL 함수는 선언시 Function 대신 Sub 키워드를 사용하고, 

호출 시에는 Call 함수명 이라고 호출해줘야 한다.



참고

[C++ 정리] 자료형의 크기 및 범위

[VB6] 변수의 데이터 형 및 선언

DLL을 만드는 방법과 C DLL 함수를 VB에서 콜하는 방법 - MSDN

반응형

댓글