|
먼저 dll내의 함수는 아닌 함수나 똑같습니다.
Call By Refrence 로 넘기면 되죠
다시 말해 데이타의 주소 (포인터)를 넘기는 겁니다
//넘겨준배열에 그래로 업데이트 되게 하려면
void Foo1( BYTE *msg)
{
msg[0]=msg[1]*10;
msg[2]=msg[1]*10;
msg[3]=msg[1]*msg[2];
}
//넘겨준배열과 결과값을 다르게 가지고자 한다면
void Foo2( BYTE *msg,BYTE *rslt)
{
rslt[0]=msg[1]*10;
rslt[2]=msg[1]*10;
rslt[3]=msg[1]*msg[2];
}
void DllFooCall()
{
BYTE msg[10];
msg[0] =0x01
msg[1] =0x02
msg[3] =0x03
Foo1(msg); // 방법 1
Foo1(&msg[0]) // 방법 1-1
BYTE result[10]; //결과를 따로 받고자 한다면
Foo2(msg,result); // 방법 2
Foo2(&msg[0],&result[0]); //방법 2-1
}
방법 1과 1-1은 똑같습니다. , 방법 2와 2-1도 똑같은것이구요
질문의 의도에 맞는 답변인지 모르겠네요
//..................
형사 님이 쓰신 글 :
: 우선 아래 도움 주신 분 모두 감사 드립니다...
:
: 그러면서 또 질문 ^^
:
: 아래 질/답 에서 찾아보니 몇가지를 찾기는 했는데 비슷한 질문 일수도 있겠구요..
:
: DLL 로 기능을 좀 분리해서 사용하고 싶은데
:
: DLL 로 BYTE 배열을 넘겨주고
:
: 그곳에서 처리를 한후 결과로 나온 배열을 다시 리턴해주고 싶은데 배열을 넘기고 받는게 잘 안되네요ㅜ.ㅜ
:
: BYTE msg[10];
:
: msg[0] =0x01
: msg[1] =0x02
: msg[3] =0x03
:
: 이렇게 넘어가면 DLL 에서 처리한 값이
:
: msg[0] =0x06
: msg[1] =0x07
: msg[3] =0x08
:
: 이 되어 다시 리턴되야 되는데 배열 이란 넘이라 아구..
:
: 생각해본것은 반복문으로 배열길이만큼 반복해서 넘겨주고 .. DLL 에서 받는값은 배열에 반복으로 넣고
:
: 근데 이러면 코딩이 더 길어 지는 건 아닌지... 조언 부탁 드립니다. .
|