자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
C++ Builder VCL 컴포넌트를 FMX용으로 바꾸고 싶습니다.
2018.09.12 18:50
이전에 제작해 놓은 VCL 컴포넌트 FMX에서 사용하려고 하니 사용이 안됩니다.
TComponent를 상속하여 만든 NonVisual 컴포넌트라서 조금만 고치면 사용 가능할것 같은데 방법을 모르겠습니다.
적용해 보신 분이 있으면 도움을 요청합니다.
감사합니다.
댓글 6
-
험프리
2018.09.13 09:38
-
쿠리
2018.09.14 14:11
답변 감사합니다.
저는 c++ builder를 사용하고 있어서
#include <vcl.h> 를 #include <fmx.h>로 수정하고
아래 처럼 System.을 추가 하였습니다.
#include <System.SysUtils.hpp>
#include <System.Classes.hpp>
패키지 파일의 타겟 플랫폼이 android로 설정되지 않아 다시 만들어서 작업 중입니다.
컴파일에서 에러나는 것을 하나씩 고쳐가고 있는데 시간이 많이 걸리네요.
-
쿠리
2018.09.14 19:42
잘 안되는 것이 한두가지가 아니네요.
간단한 것 몇가지 질문 드릴게요.
TextPos 나 StringOfChar 등의 함수를 사용하려고 하는데
System.hpp ustring.h 등을 선언하면 에러가 납니다.
[bccaarm Error] invalid preprocessing directive
fmx용 해더가 따로 있나요?
-
험프리
2018.09.17 08:57
우선 System.hpp은 시스템 관련 내용이 포함되어 내장되어 있어 별도로 include 하지 않아도 됩니다.
System.hpp에 StringOfChar가 선언되어 있습니다.
TextPos의 경우 System.SysUtils에 선언되어 있습니다.
C++빌더가 제공해주는 라이브러리 중 System. 으로 시작되는 RTL 라이브러리들은
VCL과 FMX가 공통으로 사용하는 라이브러리로 같은 해더를 사용합니다.
작업에 참고하시기 바랍니다.
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-
쿠리
2018.09.17 18:06
답변해주신 대로 하니 해더는 정상적으로 찾았습니다.
그런데 마지막에 아래와 같은 에러 만 나옵니다.
[bccaarm Error] test.cpp(1): ICE: Internal compiler error: C0000005 @ 616D1152
컴파일러 에러는 어찌하여야 하는지 ...
-
쿠리
2018.09.18 14:23
에러를 찾아가다 보니 함수의 리턴값이 클래스인 경우 에러가 발생하는 것을 발견 했습니다.
이부분을 수정하여 처리하긴 하였지만 에러를 찾기가 정말 힘들군요.
C++ Builder VCL 컴포넌트를 FMX용으로 바꾸고 싶습니다.
2018.09.12 18:50
이전에 제작해 놓은 VCL 컴포넌트 FMX에서 사용하려고 하니 사용이 안됩니다.
TComponent를 상속하여 만든 NonVisual 컴포넌트라서 조금만 고치면 사용 가능할것 같은데 방법을 모르겠습니다.
적용해 보신 분이 있으면 도움을 요청합니다.
감사합니다.
댓글 6
-
험프리
2018.09.13 09:38
-
쿠리
2018.09.14 14:11
답변 감사합니다.
저는 c++ builder를 사용하고 있어서
#include <vcl.h> 를 #include <fmx.h>로 수정하고
아래 처럼 System.을 추가 하였습니다.
#include <System.SysUtils.hpp>
#include <System.Classes.hpp>패키지 파일의 타겟 플랫폼이 android로 설정되지 않아 다시 만들어서 작업 중입니다.
컴파일에서 에러나는 것을 하나씩 고쳐가고 있는데 시간이 많이 걸리네요.
-
쿠리
2018.09.14 19:42
잘 안되는 것이 한두가지가 아니네요.
간단한 것 몇가지 질문 드릴게요.
TextPos 나 StringOfChar 등의 함수를 사용하려고 하는데
System.hpp ustring.h 등을 선언하면 에러가 납니다.
[bccaarm Error] invalid preprocessing directive
fmx용 해더가 따로 있나요?
-
험프리
2018.09.17 08:57
우선 System.hpp은 시스템 관련 내용이 포함되어 내장되어 있어 별도로 include 하지 않아도 됩니다.
System.hpp에 StringOfChar가 선언되어 있습니다.
TextPos의 경우 System.SysUtils에 선언되어 있습니다.
C++빌더가 제공해주는 라이브러리 중 System. 으로 시작되는 RTL 라이브러리들은
VCL과 FMX가 공통으로 사용하는 라이브러리로 같은 해더를 사용합니다.
작업에 참고하시기 바랍니다.
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-
쿠리
2018.09.17 18:06
답변해주신 대로 하니 해더는 정상적으로 찾았습니다.
그런데 마지막에 아래와 같은 에러 만 나옵니다.
[bccaarm Error] test.cpp(1): ICE: Internal compiler error: C0000005 @ 616D1152
컴파일러 에러는 어찌하여야 하는지 ...
-
쿠리
2018.09.18 14:23
에러를 찾아가다 보니 함수의 리턴값이 클래스인 경우 에러가 발생하는 것을 발견 했습니다.
이부분을 수정하여 처리하긴 하였지만 에러를 찾기가 정말 힘들군요.
RTL 위주의 논비주얼 컴포넌트라면 큰 문제가 없을 것입니다.
먼저, uses 절을 정리하시기 바랍니다.
1) 네임스페이스를 적용하시기 바랍니다.(Forms>Vcl.Forms, Classes>System.Classes 등)
Ctrl + 클릭으로 따라가 확인가능합니다.
2) 네임스페이스에서 VCL 또는 Winapi로 시작하는 유닛을 제거합니다.
다음으로 컴파일 오류를 해결합니다.
1) uses 절 정리로 참조하지 못하는 소스코드를 변경합니다.
그외에, 엠바카데로 기술문서에서 파이어몽키 컴포넌트 가이드 문서도 한번 확인해보세요.
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/FireMonkey_Components_Guide