VLC插件脱离树构建会导致分段错误

戴夫

我正在尝试为VLC构建“树外”插件。

电脑规格: Intel x64 Ubuntu 12.04

VLC规格: VLC媒体播放器2.0.8

为了解决这个问题

  • 克隆了VLC git存储库
  • 添加了我的模块(只是带有一些名称更改的vmem的副本)
  • 向自动工具添加了模块信息

有效!转到“工具”->“首选项”->“视频”->“输出”时,我可以在VLC中看到我的模块。

我想做“树外”的事情,在这里我独立于VLC树构建模块,然后将生成的共享库复制到VLC可以读取并由VLC检测到的地方。

我按照此处的说明进行操作:VLC树外编译

这是该模块的简化版本:

#define DOMAIN  "vlc-nysa"
#define _(str)  dgettext(DOMAIN, str)
#define N_(str) (str)
#define MODULE_STRING "nysa-video"

vlc_module_begin()

    /* VLC Uses these to identify the module */
    set_text_domain     (DOMAIN)
    set_description     (N_("Nysa Video Output"                           ))                                     
    set_shortname       (N_("Nysa Video"                                  ))                                     

    set_category        (CAT_VIDEO                                        )                                      
    set_subcategory     (SUBCAT_VIDEO_VOUT                                )                                      
    set_capability      ("vout display", 1                                ) 

    /* Options left out for brevity */

    /* Add Callbacks */
    set_callbacks       (Open, Close                                      )

vlc_module_end()

/* implementation here */

输出

因此,人们不必弄清楚scons语法,这里是构建输出:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o src/nysa_video.os -c -std=gnu99 -Wall -Wextra -O2 -fPIC -fPIC -D__PLUGIN__ -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE -DPIC -I/usr/include/vlc -I/usr/include/vlc/plugins -Iinclude src/nysa_video.c
gcc -o build/libnysa_video_plugin.so -Wl,-no-undefined,-z,defs -shared src/nysa_video.os -L/usr/lib -L/usr/local/lib -lvlc -lvlccore
scons: `install' is up to date.
scons: done building targets.

结果

我确实得到了一个名为的文件libnysa_video_plugin.so该文件已复制到/usr/lib/vlc/plugins/video_output目录中

当我运行VLC时,出现段错误:

VLC媒体播放器2.0.8 Twoflower(修订版2.0.8a-0-g68cf50b)分段错误(核心已转储)

dmesg | tail 打印出:

[141376.468964] vlc [27609]:libvlccore.so.5.1.1中的88 ip 00007f06ccd6a4db sp 00007fff029a6310错误6出现段错误[7f06ccce4000 + db000]

这是该项目的git仓库的链接:Nysa Video Git仓库

要构建,需要scons并在基本目录中:

  • 建立: scons
  • 安装(安装到/usr/lib/vlc/plugins/video_output):sudo scons install
戴夫

我发现我的代码中有一个错误

vlc_module_begin()

/* VLC Uses these to identify the module */
set_text_domain     (DOMAIN)  //THIS SHOULDN'T BE HERE
set_description     (N_("Nysa Video Output"                           ))   

当这只是一个bug时,我对于发布这个问题感到很不好,所以我创建了一个git repo,希望可以帮助希望为VLC构建树外插件的人。

VLC树外插件

自述文件中有说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章