繁体   English   中英

在Qt C ++中访问GStreamer库时出错 - 调试时程序兴奋,代码为0xc0000135

[英]Error accessing GStreamer Library in Qt C++ - Program excited with code 0xc0000135 when Debugging

我想使用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:\\用户\\用户\\文件\\集结的GStreamer-TEST5-Desktop_Qt_5_5_0_MinGW_32bit-调试; C:\\ Qt的\\ Qt5.5.0_Android \\ 5.5 \\ mingw492_32 \\ BIN; C:\\ Qt的\\ Qt5.5.0_Android \\工具\\ 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, &micro, &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();

首先,我有错误: 未定义引用`__gxx_personality_v0' ,但通过添加* void __gxx_personality_v0修复它; 虽然我不知道它是多么令人兴奋。

这三天我一直在努力解决这个问题。 任何帮助表示赞赏,或者如果您可以通过一些代码来帮助我访问头文件和库,或者调试器选项/ PATH的配置必须如何。

我使用Qt5.5.0 for Android,对于Windows我使用MinGW 4.9.2 32位编译器和GNU gdb 7.8作为调试器。

提前致谢!

我在使用Qt和Gstreamer的项目中遇到了类似的问题。

因为“未定义引用`__gxx_personality_v0'”错误,因为来自官方网站的Windows的Qt和GStreamer是使用不同的编译器构建的,并且它们的libstdc ++库不兼容 - 它们使用不同的异常处理方法。 事实上,GStreamer是纯C库。 用C ++编写的唯一组件是taglib库。 如果您将使用MinGW编译器从源代码构建此lib,然后将其替换为GStreamer文件夹,则将解决不兼容问题。 您可以在此处阅读更多详细信息: https//github.com/knowthelist/knowthelist

我设法解决了上述问题。 我必须在.exe文件夹(build-debug文件夹)中包含所有包含的dll,所以我尝试从那里运行.exe,而不是从Qt运行它,并且dll丢失的一些错误给了我的名字dll文件。 我在我的库bin文件夹中发现了一些并且已经下载了一些,现在一切看起来都很好:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM