Symbian 어플리케이션 용 Qt를 개발 중입니다. 특정 S60 버전에서만 사용 가능한 특정 플랫폼 API를 사용해야합니다.Symbian 용 멀티 플랫폼 Qt 애플리케이션 컴파일
-S60 제 3 판의 FP1 libs와 : S60_common_lib, S60_3rd_ed_lib
-S60 제 3 판 FP2 libs와 : S60_common_lib, S60_3rd_ed_lib, Symbian_common_lib
-S60 5 판 libs와 : S60_common_lib 예를 들어 , S60_5th_ed_lib, Symbian_common_lib
-Symbian^3 libs : S60_5th_ed_lib, Symbian3_lib, Sy mbian_common_lib
자세히 알 수 있듯이 특정 라이브러리는 여러 플랫폼에서 공유됩니다. 현재, 모든 다른 S60 플랫폼에 대해 별도의 .exe, 리소스 등을 얻으려면 전체 프로젝트를 여러 번 컴파일해야합니다. 필자는 pro 파일의 각 플랫폼에 대한 식별자를 정의하여이 작업을 수행합니다. 예를 들어 :
# symbian 3
DEFINES += symbian_3_build
symbian:LIBS += # ...
# S60 3.1
# DEFINES += s60_fp1
# LIBS...
을 그리고 실제 코드에서 내가 좋아하는 뭔가가 있습니다
#ifdef symbian_3_build
#include <some_s3_header.h>
#elseif s60_fp1
#include <some_fp1_header.h>
#endif
을 그래서 내 질문은 :
이 심비안 애플리케이션을위한 멀티 플랫폼 Qt를 컴파일 할 수있는 유일한 방법입니다 (예를 들어 하나의 exe로만 작동하도록 할 수있는 방법이 있습니까?)
Qt 생성자를 사용하고 있습니다. 하나의 플랫폼으로 컴파일 한 후, 다음 플랫폼으로 컴파일하기 전에 epoc 폴더에서 리소스 파일 (.exe, .rsc, _reg.rsc)을 복사합니다 (이전 파일을 오버웨어로 다시 작성). 모든 버전이 컴파일되고 특정 위치에 수집 된 후, 플랫폼에 기반하여 다른 버전을 설치하는 단일 sis 파일을 작성합니다. 이 프로세스는 오류가 발생하기 쉽습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
감사합니다.
답장을 보내 주셔서 감사합니다. RLibrary 찾고 있었고 내 자신의 DLL을 유용하게 보인다. 그러나 내가 사용하고있는 API는 예를 들어 플랫폼 전용 API 일 수 있습니다. 이 경우 DLL의 구조에 대해 확신 할 수 없거나 .def 파일에 액세스 할 수 없습니다. – Routa
@Routa : 자신의 래퍼 DLL (해당 개인 API DLL에 정적으로 링크 된)에서 DLL을 래핑 한 다음 래퍼 DLL을 동적으로로드 할 수 있습니다. – laalto
그래서 기본적으로 모든 플랫폼에 대해 자체 래퍼 DLL을 만들어 설치해야합니다. Qt를 사용하여 이러한 다형성 DLL (내 자신의 래퍼)을 만드는 것이 가능합니까 ("일반"DLL을 만드는 방법을 알고 있습니다)? – Routa