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


개발환경 : Delphi 10.2 / DB: PostgresSQL 8.X / WIndows 10

사용환경 : Windows 10 / Node FFI 이용

 

DLL 로 만든 프로젝트의 이상 현상입니다.

 

1.  VCL Form 1개를 포함한 DLL 입니다. ( cdecl 방식입니다. ) 

    Form 안에, FireDAC 콤포넌트들과 Edit, Memo 등이 있습니다.

    DLL 에 작성된 함수들은 VCL Form 안의 맴버들을 이용해서 자료를 가져오거나 전송하거나 합니다.

 

--> 다른 윈도우 어플에서 DLL을 Import 해서 사용하면 문제 없이 잘 동작합니다.

 

--> Node FFI 를 이용해서, 콘솔창이 떠 있는 상태에서 동작을 하면 정상 동작 합니다.

 

      * 단,  DLL 로딩 시 반드시..VCL Form 하나를 잠깐 띄웠다가 닫아줘야 정상 동작을 하고

            그냥 DLL 만 로딩하면 동작이 되질 않습니다.

 

      * 콘솔창이 안 보이도록 vbs 를 이용해서 실행하면, 동작되지 않습니다.

 

증상: FireDAC 콤포넌트들이 윈도우 어플에서 Import 할 때는 정상 동작 하지만,

        다른 Node FFI 같은 걸로 호출하면 제대로 올라오지 않고, 반드시 VCL Form 을 열었다가 닫아줘야 동작합니다. 

 

 

2.  DataModule 에 FireDAC 콤포넌트들을 만들어 놓고  DLL 을 만들었습니다.

 

--> 다른 윈도우 어플에이나 Node FFI 같은 걸로 DLL을 Import 하면 동작되지 않습니다.

 

증상: FireDAC 콤포넌트들이 Import 할 때 제대로 올라오지 않습니다.

 

 

3. 순수하게 DLL 외에는 다른 폼이나 Datamodule 을 사용하지 않은 경우

    FireDAC 오프젝트들을 전역으로 선언하고,     

    DLL 의 엔트리 지점 (begin ... end.) 에서 FireDAC 오브젝트들을 create 합니다.

 

--> 다른 윈도우 어플에서 DLL을 Import 해서 사용하면 문제 없이 잘 동작합니다.

 

--> Node FFI 를 이용하면 콘솔창 상관 없이 전혀 동작하지 않습니다.

 

증상: FireDAC 콤포넌트들이 윈도우 어플에서 Import 할 때는 정상 동작 하지만,

         Node FFI 같은 것으로 Import 할 때 제대로 올라오지 않습니다.

 

===================================================================

 

DLL 프로젝트 안에서 FireDAC 을 이용해서 POstgresSQL DB 에 연결할 때

 

FireDAC 콤포넌트들이 반드시 GUI 안에 있고, 그 GUI 가 한번 이상  Visible 이 되어야 정상으로 동작이 됩니다.

즉, FireDAC 콤포넌트들이 백그라운드로만 동작되는 Node JS 나  c++ 로 만든 콘솔 어플리케이션에서는

정상적으로 동작되지 않습니다.

그외의 다른 콤포넌트들은 어떤 상황에서든 상관 없이 잘 됩니다.

 

FireDAC 콤포넌트들이 GUI 환경과 밀접하게 연관이 되어있는 것 같습니다.

 

1. 혹시, FireDAC 콤포넌트들을 GUI 여부와 상관없이 정상적으로 로드할 수 있는 방법이 없나요 ?

2. FireDAC 과 관련된 이유 같은데, PostgresSQL 과 연결하는 가벼운 다른 방법은 없나요 ?

 

도움 부탁드립니다.

 

** Node FFI 내부를 확인해 보니, LoadLibrary 로 DLL 을 호출하는 것 같습니다.  즉, 동적으로 DLL 을 호출할 때

   FireDAC 콤포넌트들이 제대로 올라가지 않는 것 같습니다.

 

중간 자답: 

*** 자료를 찾아보니, FireDAC 을 이용해서 콘솔어플리케이션을 만드는 경우, 관련된 DB 커서 동작을 위해

     환경에 맞게 UI 라이브러리를 포함해야 한다는 게 있네요.

     DLL 파일을 Console 어플리케이션에서 사용하는 것도 해당될 것 같다는 생각이 드네요.

The concept of a wait cursor is abstracted in FireDAC (with the interface IFDGUIxWaitCursor) to work within FireMonkey, VCL and console applications. Therefore there exists different implementation for each kind in different units. Depending on your app-type, you have to choose the appropriate implementation. The designer usually add the right one if you drop a FireDAC component onto a form, frame or datamodule.
  • Console: FireDAC.ConsoleUI.Wait
  • FMX: FireDAC.FMXUI.Wait
  • VCL: FireDAC.VCLUI.Wait  

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 15766
공지 유용한 관련 사이트 관리자2 2014.03.20 54580
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97985
3139 Medaiplayer 컴포넌트 사용시 영상 길이 제한이 있나요? eric 2016.09.22 101
3138 시애틀을 사용하고 있는데, 베를린 업데이트2를 설치하려고 합니다. 삭제 후 설치해야 하나요? 관리자 2017.01.05 101
3137 LIstView 레이아웃 작업중에 질문드립니다~! syc 2017.03.10 101
3136 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 13 - Exercise 4 [1] 관리자 2016.05.10 102
3135 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 24 - Exercise 1 [2] 관리자 2016.05.27 102
3134 유투브에 올라온 인형만들기 연습중 알게되었습니다. 쭈니아빠 2016.07.16 102
3133 [델파이 부트캠프] 델파이가 어떻게 바뀌고 있는지 궁금하네요. 험프리 2016.09.30 102
3132 Insertbase XE7 사용하고 있는데요. 중첩 SELECT가 안되나요? [1] 짧굵 2016.11.02 102
3131 무슨 에러인가요.. 해결이 안됩니다. file KayKim 2017.04.06 102
3130 [100%활용 세미나] RAD서버와 엔터프라이즈 커넥터를 구매하지 않고 사용가능한가요? 험프리 2017.11.10 102
3129 구글플레이에 올릴려면 리오로 apk를 생성하면 된가요? [2] 화이부동 2018.12.19 102
3128 datasnap 이용하여 sqlconnection 이용하여 데이타를 모방일에서 가져오는데. 종결자 2019.12.01 102
3127 안드로이드 64비트 컴파일시 옵션이 안보임 [1] file 화이부동 2020.06.09 102
3126 프로그램 실행하면 편집중인 멀티페이지에서 시작하는 문제 [1] 스카이 2017.03.07 102
3125 *.DPC 컴포넌트 설치 질문 [1] 연일하 2016.08.30 103
3124 실행파일 생성 오류가 발생하네요 뭐가 잘 못 되었을까요 [1] 백거 2016.10.27 103
3123 [공유] FireDAC 로그인 창이 표시되는데요 어떻게 표시하지 않나요? file 험프리 2017.07.05 103
3122 ADOQuery의 SQL 에 Select * from Table where 조건 을 만족하는 데이터를 읽어 오는 방법 문의 드립니다. 한태수 2019.12.05 103
3121 [10.3.3 브리핑] 안드로이드 64비트 장비에서 실행이 안되요. 험프리 2019.12.10 103
3120 XE8에서 지원하는 구문 강조 기능이 XE7에서 사용 가능한가요? [2] roki81 2017.02.20 103