반응형
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 함수명 이라고 호출해줘야 한다.
참고
반응형
'호구지책 > VB6' 카테고리의 다른 글
[VB6] Visual Basic 6.0 리소스 센터 (0) | 2017.12.14 |
---|---|
[VB6]비주얼베이직 런타임 오류코드 목록 (0) | 2017.12.14 |
[VB6] 공용컨트롤 : 속성들 (0) | 2017.12.13 |
[VB6] 공용컨트롤 개요 (0) | 2017.12.13 |
[VB6] 공용컨트롤 : InputMode (0) | 2017.12.13 |
[VB6] 공용컨트롤 : InputLen (0) | 2017.12.13 |
[VB6] ByVal과 ByRef의 차이점 (0) | 2017.12.07 |
[VB6] 비주얼베이직 6.0에서 DLL 호출하기 (0) | 2017.11.29 |
댓글