日期:2014-05-16  浏览次数:20867 次

关于Glib和gstreamer应用过程中使用动态库的问题
首先gstreamer的运行的运行环境和sdk是在google开源代码上下载的ossbuild的
在vs2010中使用,普通调用一个gstreamer的接口是没问题的
比如
GstElement *ele = gst_element_factory_make("filesrc","file");
这样是ok的
但是如果我不配置sdk环境采用LoadLibrary的方式打开gstreamer的动态库然后索引相应函数然后通过函数指针的形式去调用,就会报错
比如
FuncName TestFun = NULL;
g_hLib = LoadLibrary(TEXT("gstreamer.dll"));
TestFun = (FuncName)GetProcAddress(g_hLib,"gst_element_factory_make");
GstElement *Ele = TestFun("filesrc", "file");
调用TestFun的时候就会出现
Glib-GObject-WARNING **: cannot register existing type 'GstObject'
Glib-CRITICAL **:g_once_init_leave: assertion 'initialization_value != 0' failed
等等这些关于glib的报错
搜索了下网上也有其他人发过类似的错误,不过并不是gstreamer,总之是基于gtk或者glib的一些应用程序,也是采用LoadLibrary打开动态库来调用库里的函数,就会出现这样的问题
有没有知道这个问题该如何解决?

------解决方案--------------------
是不是要设置一些环境变量比如
GST_PLUGIN_PATH
------解决方案--------------------
pkg-config --libs --cflags gstreamer-0.10 glib-2.0