我正在尝试为VLC构建一个“out of tree”插件。
计算机规格:Intel x64 Ubuntu 12.04
VLC规格: VLC媒体播放器2.0.8
解决这个问题
有效!当我转到工具 - > preferences-> video->输出时,我可以在VLC中看到我的模块。
我想做同样的事情'Out of Tree'我在那里构建独立于VLC树的模块,并将生成的共享对象库复制到VLC可以读取它并且VLC检测到它的地方。
我按照这里的说明操作: VLC Out of tree compile
SConstruct
文件来构建它
以下是该模块的缩短版本:
#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时,我遇到了一个seg错误:
VLC媒体播放器2.0.8 Twoflower(修订版2.0.8a-0-g68cf50b) 分段错误(核心转储)
dmesg | tail
打印出来:
[141376.468964] vlc [27609]:segfault at 88 ip 00007f06ccd6a4db sp 00007fff029a6310 libvlccore.so.5.1.1中的错误6 [7f06ccce4000 + db000]
以下是此项目的git repo链接: Nysa Video Git Repo
要构建你需要scons并在基本目录中:
scons
/usr/lib/vlc/plugins/video_output
):sudo scons install
答案 0 :(得分:1)
我发现我的代码中存在错误
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" ))
我觉得发布这个问题时我觉得很糟糕,所以我创建了一个git repo,希望能帮助那些想要为VLC构建一个out of tree插件的人。
自述文件中有说明