gpt4 book ai didi

qt - QPainter JNI调用使应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 15:45:48 29 4
gpt4 key购买 nike

我要做什么 –对Qt编写的共享库进行JNI调用。在C++方面,我正在使用QPainter和QSvgRender来处理svg图像并返回一个简单的QImage。

QImage im;
QPainter painter;
if("image/svg+xml" == mimeType) {
QSvgRenderer svgrenderer(ar);
im = QImage(static_cast<int> (svgrenderer.defaultSize().width()),
static_cast<int> (svgrenderer.defaultSize().height()),
QImage::Format_ARGB32);
im = im.scaled(QSize(50,50), Qt::KeepAspectRatio);
im.fill(0);
painter.begin(&im);
svgrenderer.render(&painter); //Crashes here
}

什么是
如图所示,调用render时代码崩溃。而且它仅对某些SVG图像崩溃。

如果我在独立的Qt应用程序中运行代码,则可以正常工作。
与独立的Qt App相比,我没有在共享库中创建QApplication实例。
因此,我决定以这种方式创建一个-

来自Java主线程–产生另一个线程,该线程进行JNI调用以创建QApplication。运行exec()。

在QApplication初始化之后,从Java主线程继续进行其他JNI调用。

这仍然行不通。关于我可能做错了什么以及做我想做的正确方法的任何建议?
我已经在论坛和网络上搜索了解决方案,但没有任何帮助。唯一接近我需要的线程是– http://developer.qt.nokia.com/forums/viewthread/2283 [developer.qt.nokia.com]。

整个过程在基于Java的Web容器中运行。

最佳答案

有点解决了崩溃的问题。似乎是我正在使用http://bugs.sun.com/view_bug.do?bug_id=5102720的Java 1.5中的错误

我现在已经通过更改qt来解决它,通过为qmake-添加这些标志来弥补堆栈重新对齐问题。

QMAKE_CFLAGS += "-mstackrealign"
QMAKE_CXXFLAGS += "-mstackrealign"

问题主要在Windows上。

关于qt - QPainter JNI调用使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4487250/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com