|
구조체 선언부 입니다.
typedef struct {
BYTE* bData;
long nLen;
} DATALIST;
메인 프로그램에서
void __fastcall TScript::DataSetMain(void)
{
DATALIST *tDataList = (DATALIST*)malloc(sizeof(DATALIST)*2);
//DLL Function CALL
DataSetFunc(tDataList);
//Data 확인
BYTE bTemp[256] = {0x00,};
memcpy(bTemp, tDataList[0].bData, tDataList[0].nLen);
memcpy(bTemp, tDataList[1].bData, tDataList[1].nLen);
//DATA free
free(tDataList[0].bData);
free(tDataList[1].bData);
delete[] tDataList;
}
DLL 에서
void DataSetFunc(DATALIST *tSettList)
{
BYTE bData1[6] = {0x01,0xA2,0x03,0x04,0x05,0x06};
BYTE bData2[5] = {0x0A,0x0B,0x0C,0x0D,0x0E};
BYTE* DATA1;
BYTE* DATA2;
DATA1 = (BYTE*)malloc(sizeof(bData1));
memcpy(DATA1, bData1, sizeof(bData1));
tSettList[0].bData = DATA1;
tSettList[0].nLen = sizeof(bData1);
DATA2 = (BYTE*)malloc(sizeof(bData2));
memcpy(DATA2, bData2, sizeof(bData2));
tSettList[1].bData = DATA2;
memcpy(tSettList[1].bData, bData2, sizeof(bData2));
tSettList[1].nLen = sizeof(bData2);
}
이렇게 코딩했습니다.
맞게 하는건지 모르겠네요.
일단 데이터는 전달 받습니다.
또한 메인폼에서 free(tDataList)할때
데이터부분(구조체의 bData) free가 않됩니다.
그래서 직접
free(tDataList[0].bData);
free(tDataList[1].bData);
을 해주구요.
답변 부탁드립니다.
수고하세요.
|