자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------

델파이로  DLL 을 만들어서 Node JS 와 인터페이스 하고 있습니다.

 

DLL 내부에서, FireDAC 의 FDConnection + FDQuery 콤포넌트를 이용해서 자료를 잘 읽고 쓰고 하고 있습니다.

 

문제는, 해당 DLL 을 불러다가 사용하는 다른 프로그램을 종료할 때  Runtime ERROR 216 이 발생합니다.

 

FDConnection 으로 PostgresSql 을 연결해서 사용할 때는 문제가 없는데 FireBird DB 연결 후 종료 시 에러가 발생합니다.

해당 프로그램에서 DB 연결을 끊어놓고 종료를 하면 문제가 발생하지 않는 걸 보아,

예측컨데 DLL 의 FDConnection 을 통해 연결된 FireBird( FDConnection ) 문제로 보입니다.

 

그래서, 

DLLMain 의 DLL_PROCESS_DETACH 이벤트 발생 시 FDConnection을 끊어주는 문장을 실행시켰지만

동작하지 않습니다.  모래시계가 잠깐 나오다가..DLL 은 종료가 되지만 DLL을 호출한 프로그램은 런타임오류가 발생합니다.

 

혹시, FireBird 와 관련해서 다르게 해야하는 것이 있는 지 도움 부탁드립니다.

 

-------------- DLLMAIN 이벤트 처리 내용 -----------------

procedure DllMain(dwReason: DWORD);

begin

    case dwReason of

      // process attaches = 1

      DLL_PROCESS_ATTACH: begin

        OutputDebugString('Process Attach!');

        CoInitializeEx(nil, COINIT_APARTMENTTHREADED);

      end;

      // thread attaches = 2

      DLL_THREAD_ATTACH: begin

        OutputDebugString('Thread Attach');

      end;

      // thread detaches = 3

      DLL_THREAD_DETACH: begin

        OutputDebugString('Thread Detach');

      end;

      // process detaches = 0

      DLL_PROCESS_DETACH: begin

        FDConnection1.Close;  <----------------  동작이 되지 않습니다.  또는 FDConnection1.Connected := False; 도 동작하지 않습니다.

        OutputDebugString('Detach!');                ( FireBird 에서만 안됩니다.  PostgresSql 은 이상이 없습니다. )

        CoUninitialize;

      end;

    end;

end;

 

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 15769
공지 유용한 관련 사이트 관리자2 2014.03.20 54583
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 98003
393 vcl160.bpl access violation [1] 도의 2017.03.20 1316
392 NFC 관련 앱을 XE 시리즈로 개발 가능한지요? [1] 유탐호호 2014.09.02 1317
391 MDI, CHILD 구성 DLL Form Close [1] 가나다 2021.01.11 1317
390 [세미나] VCL 말고 웹(PHP) 등에서도 푸시 보낼 수 있나요? [1] Humphery 2014.08.20 1322
389 블루투스 송수신 질문이 있습니다. [3] 데브순 2018.03.23 1325
388 [세미나] BaaS에서 아이디와 이메일 중복확인 기능을 제공하나요? [1] Humphery 2014.08.05 1346
387 [XE5] XE5에선 GCM 사용이 불가능한가요? [1] 와니 2014.10.17 1347
386 안드로이드 스플래시 이미지 문의 드립니다. [2] 타락천사 2015.03.09 1352
385 DataSnap에서 NetWork 여러개인 경우 파빌신 2014.04.30 1357
384 xe10.1에서 ActiveX , *.ocx 설치방법 부탁합니다 [3] 모나도 2016.11.04 1358
383 [안드로이드] 앱 배포후 업데이트시 overwrite 안됩니다.해결방법좀 알려주세요 ㅠ. [2] 한사람 2016.03.27 1358
382 [세미나] XE7에서는 컴파일 크기가 개선되었나요? [1] Humphery 2014.09.17 1363
381 환경파일에서 "The imported project file could not be loaded. '', hexadecimal value 0x01, is an invalid character." 오류 발생 시 조치사항 [4] Humphery 2014.11.28 1363
380 WINEXEC 관련해서 문의드립니다 [3] file jcitec 2015.05.16 1371
379 [세미나] 코드아카데미(BaaS 온라인 강의) 질문답변 Humphery 2014.07.30 1373
378 des암호화 복구화 대해서 알고 싶습니다 [1] 헨씀히포 2017.02.28 1381
377 바코드로부터 입력과 키보드 입력을 어떻게 구분하나요? [1] from5 2016.01.09 1388
376 Delphi5, Paradox DB이용한 32bit 프로그램... [1] LucyKim 2014.08.19 1390
375 Oracle DB 연결시 무었이 문제인지 도움 부탁 드립니다. [3] file 늦바람 2015.06.09 1396
374 secure coding 가이드 문의 (delphi 용) 저팔계 2014.09.26 1398