ARM 플랫폼 용 Qt 4.8.3을 사용하는 프로젝트에서 작업하고 있습니다. 내 프로젝트에서는 QGraphicsItems
... QGraphicsPixmapItem
의 하위 클래스 중 하나를 사용합니다.QPixmap :: load() crash - 피하려고합니다
코드는 32 비트 비트 맵 이미지로 테스트되었으며 충돌합니다.
충돌은 ARM 에서뿐만 아니라 QVFB에서도 발생합니다.
QPixmap p;
if (!p.load(filename)) // crashes here
return false;
나는 시도 ... 캐치 이것을 둘러싸고하려고 노력하지만, 도움이되지 않았다.
이 버전의 Qt 코드에서 단계를 밟을 수없는 것 같지만 ... QImageReader::read(QImage*)
에서 충돌이 발생합니다.
스택 추적 :
이QImageReader::read(QImage*)
QImageReader::read()
QPixmapData::fromFile(QString const&*, QFlags<QT::ImageConversionFlag>)
QPixmap::load(QString const&, char const*, QFlags<QT::ImageConversionFlag>)
QPixmapItem::loadItemFromFile // mine, the code above
이미지의 다른 유형의 작동 ... 제대로 윈도우에서 같은 32 비트 비트 맵로드, 같은 Qt는 버전. 동일한 Qt 버전에서 Desktop 용으로로드 (false 반환)되지 않습니다.
이 유형의 파일을 제외해도 기쁠 것입니다. 그러나 어떻게해야할지 모르겠습니다.
이미지를로드하지 않고 충돌을 피할 수있는 방법이 있습니까?
아마도 이미지 헤더 만로드하고 해당 유형을 확인하는 방법이 있습니까?
이미지 형식 및 ImageConversionFlags의 다양한 조합을 매개 변수로 사용하여 호출 해보십시오. –
@MichaelO. 나는 실험을 시도했다. 그러나 나는 모든 타입의 이미지 파일을 읽을 수 있어야한다. 하나의 타입으로 제한 할 수 없다. "BMP"가 아닌 다른 값을 설정하면 false가 반환됩니다. 왜냐하면 이미지 유형이 읽기 전에 실패 할 수 있기 때문입니다. 그러나 비트 맵 및 기타 모든 유형의 파일을 읽을 수 있어야합니다. 난 그냥 32 비트 비트 맵을 제외하고 싶습니다. – Thalia