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 **
나는 문제가, new
및 delete
호출에 어쩌면 프로세서에 의해 수입 된 표준 라이브러리가 올바른 일이 아니라고 생각.
미리 감사드립니다.
아주 좋은 대답 –