Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[12173] 델파이에서 DLL 함수 호출 후 정상 리턴 된 다음 ...
김용하 [] 2867 읽음    2008-08-22 22:52
현재 이미지 핸들링 관련 프로젝트를 진행 중에 있습니다.
플로우를 간략하게 설명 드리겠습니다.

1. VC++을 이용하여 동적 DLL을 제작하여 델파이 엔지니어에게 전달 하였습니다.
2. 델파이 프로그램에서 저희가 만들어준 DLL을 링크 합니다.
    여기서 잠깐 : 저희가 만들어준 DLL에서는 DLL과 저희쪽 Application과 Socket을 연결하여
                        이미지 데이터를 주고 받습니다.
3. 델파이에서 이미지 하나를 DLL을 이용하여 저희쪽 Application에 전송합니다.
4. 저희쪽 프로그램에서는 델파이에서 보내는 이미지를 DLL을 통해 받은 후 적당한 처리를 수행 합니다.
    수행이 다 끝나면 보내온 DLL로 결과를 보냅니다.(이미지와, Float형 값, 정수형값등)
5. DLL에서 저희쪽 Application에서 보낸 결과를 받은 후 델파이로 결과를 가지고 갈 것을 요청하는 윈도우
    메시지를 SendMessage를 이용하여 델파이에게 통보 합니다.
6. 그러면 델파이는 DLL함수를 이용하여 결과값을 가지고 갑니다.

그런데 이때 델파이 프로그램이 비정상적으로 죽어 버립니다.
결과값을 다 가지고 가고 나서 말이져.

그런데 델파이 개발자는 저희 쪽에서 DLL을 잘 못 만들어 그렇다고 버팁니다.

어떻게 해야 델파이에서 정상적으로 값을 받고 나서 죽지 않을 까요... 미칩니다.

델파이 소스입니다.

procedure TForm1.getClick(Sender: TObject);
var fPhoto_img : TMemorystream;
    fPhoto_img_jpg :TJpegimage;
    l_return:integer;
begin
//                           if l_face_recv_ok = 1 then
                           begin
                              try
                               fillchar(cns_face_size,sizeof(cns_face_size),#0);
                              l_return := GetResultData(@cns_face_value, @cns_face_size, cns_face_img, @cns_flag); ==> 이부분이 DLL의 함수를 호출 하는 부분
                              if   l_return = 1 then showmessage('정상') ==> 이 메시지 까지 정상적으로 나온 후 델파이 프로그램이 죽어요
                              else
                                showmessage('실패');
                                memo1.Lines.Add(inttostr(cns_flag)) ;
{
                                GetResultData1(@cns_face_value);
                               memo1.Lines.Add(FloatToStr(cns_face_value)) ;
                                GetResultData2(@cns_face_size);
                                memo1.Lines.Add(inttostr(cns_face_size)) ;
                                GetResultData3(cns_face_img);
                                memo1.Lines.Add(string(cns_face_img)) ;
                                GetResultData4(@cns_flag);
                                memo1.Lines.Add(inttostr(cns_flag)) ;
}
{
                        fPhoto_img := TMemorystream.Create;
                        fPhoto_img.WriteBuffer(cns_face_img,cns_face_size);
                        fPhoto_img.Position := 0;
                        fPhoto_img_jpg := TJpegimage.Create;
                        fPhoto_img_jpg.LoadFromStream(fPhoto_img);
                       Image3.Picture.Graphic := fPhoto_img_jpg;
                       fPhoto_img.Free;
                       fPhoto_img_jpg.Free;
}
                              except
                              end;
                           end;
end;

이런 문제 저희 DLL에서 수정을 해야 하나요...?
이거 델파이쪽에서 해결해야 할 문제 인듯 합니다만....

+ -

관련 글 리스트
12173 델파이에서 DLL 함수 호출 후 정상 리턴 된 다음 ... 김용하 2867 2008/08/22
12175         Re:Re:델파이에서 DLL 함수 호출 후 정상 리턴 된 다음 ... 김용하 2055 2008/08/24
12177                 Re:Re:Re:Re:델파이에서 DLL 함수 호출 후 정상 리턴 된 다음 ... 김용하 2246 2008/08/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.