현재 이미지 핸들링 관련 프로젝트를 진행 중에 있습니다.
플로우를 간략하게 설명 드리겠습니다.
1. VC++을 이용하여 동적 DLL을 제작하여 델파이 엔지니어에게 전달 하였습니다.
2. 델파이 프로그램에서 저희가 만들어준 DLL을 링크 합니다.
여기서 잠깐 : 저희가 만들어준 DLL에서는 DLL과 저희쪽 Application과 Socket을 연결하여
이미지 데이터를 주고 받습니다.
3. 델파이에서 이미지 하나를 DLL을 이용하여 저희쪽 Application에 전송합니다.
4. 저희쪽 프로그램에서는 델파이에서 보내는 이미지를 DLL을 통해 받은 후 적당한 처리를 수행 합니다.
수행이 다 끝나면 보내온 DLL로 결과를 보냅니다.(이미지와, Float형 값, 정수형값등)
5. DLL에서 저희쪽 Application에서 보낸 결과를 받은 후 델파이로 결과를 가지고 갈 것을 요청하는 윈도우
메시지를 SendMessage를 이용하여 델파이에게 통보 합니다.
6. 그러면 델파이는 DLL함수를 이용하여 결과값을 가지고 갑니다.
그런데 이때 델파이 프로그램이 비정상적으로 죽어 버립니다.
결과값을 다 가지고 가고 나서 말이져.
그런데 델파이 개발자는 저희 쪽에서 DLL을 잘 못 만들어 그렇다고 버팁니다.
어떻게 해야 델파이에서 정상적으로 값을 받고 나서 죽지 않을 까요... 미칩니다.
델파이 소스입니다
GetResultData(&coeff, &size, data, &flag)
memo1.(coeff)
memo1.(size)
memo1.(data)
memo1.(flag)
이렇게 하면 안 죽습니다,
그런데 memo는 전혀 필요 없는 거고요... 죽으니까 저걸 써서 데이터를 풀어 보았습니다.
C쪽 Dll은
extern "C" __declspec(dllexport) int GetResultData(float *Coeff, unsigned long *Size, unsigned char *Data, int* Flag)
{
//::SetFocus(pMainProc->m_hWnd);
return pMainProc->GetResultData(Coeff, Size, Data, Flag);;
}
이렇게 되어 있습니다.
결론은
델파이쪽에서
GetResultData(&coeff, &size, data, &flag) 이거만 호출 해서 데이터를 받아 가야 합니다.
부탁 드릴께요...
|