我想使用 gstreamer 库进行视频编程,我读到 Qt5.5.0 提供了对 gstreamer-1.0 的支持,这是我使用的库。我先下载了1.0.7版本,但是出现如下错误,所以我下载了最新的1.5.2版本,我现在正在尝试使用。
我设法链接了 gstreamer 库头文件,所以我没有构建它,只是包含它的路径并访问头文件和库。无论如何,现在我有一个程序意外完成的错误。当我尝试调试它时,弹出窗口中出现以下错误: 在启动程序期间兴奋代码 0xc0000135。
关于一般消息:
:1:24:只读版本 1.1 部分。 :10:5:只需要 Component 和 ModuleApi 对象定义。
我阅读了很多与此错误相关的问题,但都没有帮助,我认为是 gstreamer 库的错误,但也可能是编译器/调试器错误,正如我在某些主题中所读到的。
我检查了我的 PATH 变量,因为我也无法在 Qt 之外运行程序(通过尝试在构建的调试文件夹中运行 .exe)——错误:库 Qt5Cored.dll 丢失——我发现了这个路径:
C:\Qt\Qt5.5.0_Android\5.5\mingw492_32\lib; C:\Users\user\Documents\build-GStreamer-test5-Desktop_Qt_5_5_0_MinGW_32bit-Debug; C:\Qt\Qt5.5.0_Android\5.5\mingw492_32\bin; C:\Qt\Qt5.5.0_Android\Tools\mingw492_32\bin; C:\Windows\system32; C:\Windows ; C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0; C:\Program Files\Skype\Phone\(我不知道为什么包括这个,但我检查时它在那里)
我是 Qt 的新手,以前从未遇到过这个错误。如果您需要任何代码:
.pro:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = GStreamer-test5
TEMPLATE = app
SOURCES += main.cpp
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
INCLUDEPATH += C:/gstreamer/1.0/x86/include/gstreamer-1.0
C:/gstreamer/1.0/x86/lib/gstreamer-1.0/include
C:/gstreamer/1.0/x86/include/glib-2.0
C:/gstreamer/1.0/x86/lib/glib-2.0/include
LIBS += -L C:/gstreamer/1.0/x86/lib/ -lgstreamer-1.0
和.main:
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <stdio.h>
#include "gst/gst.h"
void *__gxx_personality_v0;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
const gchar *nano_str;
guint major, minor, micro, nano;
gst_init (&argc, &argv);
gst_version (&major, &minor, µ, &nano);
if (nano == 1)
nano_str = "(CVS)";
else if (nano == 2)
nano_str = "(Prerelease)";
else
nano_str = "";
// printf ("This program is linked against GStreamer %d.%d.%d %s\n", major, minor, micro, nano_str);
qDebug() << "This program is linked against GStreamer %d.%d.%d %s\n", major, minor, micro, nano_str ;
return a.exec();
首先,我遇到了错误: undefined reference to `__gxx_personality_v0' ,但通过添加 *void __gxx_personality_v0; 修复了它,虽然我不知道它到底是什么。
我已经为这个问题苦苦挣扎了三天。感谢任何帮助,或者如果您可以通过一些代码帮助我了解如何访问头文件和库,或者调试器选项/PATH 的配置必须如何。
我在 Android 上使用 Qt5.5.0,在 Windows 上我使用 MinGW 4.9.2 32 位 编译器和 GNU gdb 7.8 作为调试器。
提前致谢!
最佳答案
我在同时使用 Qt 和 Gstreamer 的项目中遇到了类似的问题。
“undefined reference to `__gxx_personality_v0'”错误的原因是来自官方站点的 Qt 和 GStreamer for windows 是使用不同的编译器构建的,并且它们的 libstdc++ 库不兼容 - 它们使用不同的异常处理方法。 事实上,GStreamer 是纯 C 库。它唯一用 C++ 编写的组件是 taglib 库。如果您将使用您的 MinGW 编译器从源代码构建这个库,然后将其替换到 GStreamer 文件夹中,那么不兼容的问题就会得到解决。 您可以在此处阅读更多详细信息:https://github.com/knowthelist/knowthelist .
关于c++ - 在 Qt C++ 中访问 GStreamer 库时出错 - 调试时程序因代码 0xc0000135 而兴奋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31948418/