libvlc_new(0,NULL);分段故障

时间:2013-07-25 09:47:15

标签: qt-creator libvlc

使用此行时出现问题:

   vlcInstance = libvlc_new(0, NULL);

vlcInstance 在我的标题中声明:

  libvlc_media_player_t *vlcPlayer;

我使用的是Qt 5.0.1,我有这个错误:

The inferior stopped because it received a signal from the Operating System.

Signal name : SIGSEGV Signal meaning : Segmentation fault

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

在Windows上有一个相同的问题,一个简单的程序链接到VLC发行版的预建静态库。解决方案只是将.dll文件和plugins文件夹从VLC分发根目录复制到应用程序文件夹。

答案 1 :(得分:1)

我在64位Kubuntu 13.04上使用Qt Creator 2.7.2和QT 5.1.0。我也在使用vlc-2.2.0-git。

我创建了一个新的QT项目。

我将此添加到新项目文件中(根据需要更改vlc路径):

INCLUDEPATH += /home/linux/vlc/install/include
LIBS += -L"/home/linux/vlc/install/lib" -lvlc

bare-bones main.cpp(包括显然是段错误的代码):

#include <QtDebug>

#include "vlc/libvlc.h"
#include "vlc/libvlc_media.h"
#include "vlc/libvlc_media_player.h"

int main(int argc, char *argv[]) {
    qDebug() << "Starting...";

    libvlc_instance_t* p_instance = libvlc_new(0, NULL);
    qDebug() << "p_instance" << p_instance;

    if (p_instance) {
        libvlc_media_player_t *p_media_player = libvlc_media_player_new(p_instance);
        qDebug() << "p_media_player" << p_media_player;

        if (p_media_player) {
            libvlc_media_player_release(p_media_player);
        }

        libvlc_free(p_instance);
    }

    qDebug() << "Exit normally";
}

这对我来说运行得很好,没有段错误:

Starting... 
p_instance 0x19140f0 
p_media_player 0x19da6d8 
Exit normally