ANSI C DLL과 Visual Basic 6 사이에 배열 데이터를 전달하는 방법



주요한 소프트웨어:
주요한 소프트웨어 버전: N/A
문제가 해결된 소프트웨어 버전: N/A
부차적인 소프트웨어: N/A

문제점: Visual Basic 6에서 자신이 생성한 ANSI C 기반 DLL로 부터 배열 값을 전달하기 위한 함수를 호출할 때, Visual Basic 6은 충돌을 발생시킵니다. Visual Basic 6에서 ANSI C DLL에 있는 배열에 데이터가 전달 될 때 충돌이 발생하는 이유는 무엇입이까?

솔루션:

ANSI C와 Visual Basic 6.0(VB 6.0)은 배열의 데이터 저장 방식이 다르기 때문에, VB 6.0과 ANSI C에서 함수를 이용하여 값을 전달할 때 같은 방식으로 할 수 없습니다. 배열을 데이터 타입에 대한 참조로 전달을 해야 하며, 배열의 첫번째 요소만을 함수 호출시 전달해야 합니다.

예를 들면, ANSI C DLL에 아래와 같은 함수가 정의되어 있다고 가정하겠습니다.

int32 __stdcall ReadArray(double readArray[])

VB6에서는 아래와 같은 함수의 프로토타입으로 선언이 되어야 합니다.

Declare Function ReadArray (ByRef readArray As Double)

VB 6에서는 아래와 같이 첫번째 요소만을 이용하여 함수를 호출 할 수 있습니다.

ReadArray(Data(0))



관련 링크: KnowledgeBase 42AIQMX1: Microsoft Visual Basic 6.0 Wrappers for NI Sync, NI TClk, and NI HWS KnowledgeBase 3NDDQLDD: Programming with DAQmx Base in VB 6.0,VB.NET, and C#

첨부:





리포트 날짜: 01/11/2008
마지막 업데이트: 01/11/2015
문서 번호: 4HAEHR9S