2013-12-13 1 views
4

Momentics IDE 버전 2.0으로 BB10 계단식 프로젝트를 만들려고하고 있습니다. Dinkumware 대신 GNU 표준 라이브러리를 사용하는 프로젝트가 필요합니다 (GNU std 만 지원하는 arm-unknown-nto-qnx8.0.0eabi-g++으로 컴파일 된 외부 라이브러리가 있기 때문에).).BlackBerry 10 : GNU STL

IDE에서 프로젝트 등록 정보 -> C/C++ 빌드/설정/런타임을 "예외가있는 C++ GNU"로 변경했습니다. 그러나 정적 라이브러리 (.a 파일)를 사용하여 간단한 프로젝트를 실행할 때 (헤더 파일에 생성자, std::string 개체, setter 및 getter (개체의 경우) 및 해당 cpp 파일이 포함 된 경우) 세그먼트 오류 나는이 작업을 수행 할 때

testnamespace::testclass *object = new testnamespace::testclass(); 

std::string test = "Hello"; 
object->setText(test); 

delete object; 

내가 라이브러리가 GNU 표준으로 컴파일 된 프로젝트가 Dinkumware 컴파일되어 있기 때문에이 오류가 발생 생각합니다.

본인은이 경로를 포함 확인, 나는

C:\bbndk\target_10_1_0_428\qnx6\usr\include\c++\4.6.3 

는 또한, 프로젝트의 CPP 파일을 컴파일하는 메이크에서 사용하는 명령이 qcc -Vgcc_ntoarmv7le 전에

C:\bbndk\target_10_1_0_428\qnx6\usr\include 

가 포함되어 있는지 발견 qcc -V4.6.3,gcc_ntoarmv7le_gpp (gnu stl의 지원 플래그) 대신.

내가 잘못 했나요? 일부 구성이 누락 되었습니까?

저는 BlackBerry 프로젝트에서 Dinkumware 대신 GNU STD를 사용해야합니다.하지만 어떻게해야하는지 알 수 없습니다.

편집 : 나는 내 프로젝트에서 일부 변경 한 나는 몇 가지 문제를 해결

.

나는

QMAKE_CXX = qcc -V4.6.3,gcc_ntoarmv7le_gpp 
QMAKE_CC = qcc -V4.6.3,gcc_ntoarmv7le 
QMAKE_LINK = qcc -V4.6.3,gcc_ntoarmv7le_gpp 
QMAKE_AS = qcc -V4.6.3,gcc_ntoarmv7le_gpp 

LIBS += -lc -lm -lcpp -lstdc++ -Bstatic ../libs/libteste.a -Bdynamic 

내 .PRO 파일이 추가 (LIBS 명령은 물론 이미 있었다,하지만 난 당신이 내가 libs와 연결하고 방법을 이해할 수 있도록 여기에 넣어하기로 결정했다).

QML 디버깅을 사용 : I 출력을 얻고 경우 코드가 delete temp;에 도달 할 때까지,

testenamespace::TesteClass *temp = new testenamespace::TesteClass() ; 

std::string teste = "Hello"; 

temp->setTesteString(teste); 

QString qsr = QString::fromStdString(temp->getTesteString()); 


qDebug ("String in the object: "+qsr.toLatin1()); 

delete temp; 

모든 것이 잘 작동 :

지금, 나는 다음과 같은 코드가 있습니다. 안전한 환경에서만 사용하십시오! 객체의 문자열 : Hello 프로세스 1173778674 (test_bb10) 종료 SIGSEGV 코드 = 2 fltno = 11 ip = 0150ed7c (/usr/lib/[email protected]_list_release+0x3c) mapaddr = 00027c. 심판 = 78362e2b

때로는 내가 할

QML 디버깅을 사용할 수 있습니다. 안전한 환경에서만 사용하십시오! 객체의 문자열 : 이 아닌 Hello free malloc 객체 : ../../ dlist.C : 1096 **

나는 문제가, newdelete 호출에 어쩌면 프로세서에 의해 수입 된 표준 라이브러리가 올바른 일이 아니라고 생각.

미리 감사드립니다.

답변

2

내 프로젝트를 우분투로 옮겨서이 문제를 해결했습니다. Windows 용 모멘텀은 GNU C++에서 런타임으로 잘 작동하지 않습니다.

+2

아주 좋은 대답 –