【发布时间】:2013-03-10 05:58:52
【问题描述】:
我已按照自述文件中的说明设置项目,并安装并编译了 GLib 2.28.8。当我开始编译 gstreamer 时,我收到了数千个错误,这些错误表明构建设置或 GLib 版本有问题。我找不到其他适用于 Windows 的 GLib 版本的简单来源(我在这里尝试了 GLib 的 dev 和 sources 版本:http://www.gtk.org/download/win32.php)。
第一个编译错误是:
...\build\gstreamer-1.0.5\gst/gstobject.h(170): error C2079: 'lock' uses undefined struct '_GMutex'
在gstobject中,锁定义为:
GMutex lock; /* object LOCK */
Visual Studio 根据 gthread.h 中的定义找到哪个
typedef struct _GMutex GMutex;
所以对我来说一切都很好,但也许我忽略了一些东西。 glibconfig.h 也将 _GMutex* 定义为 GStaticMutex,会不会有干扰?
【问题讨论】:
-
是否也定义了
struct _GMutex? -
在glibconfig.h中,有这样的: typedef struct _GMutex* GStaticMutex;
-
那个typdef定义了GStaticMutex,请检查
struct _GMutex本身是在哪里定义的。 -
当然 - 我找不到在 GLib 中定义 _GMutex 的位置。
-
在进行更多挖掘之后,我发现 _GMutex、_GCond 和 _GPrivate 都有 typedef 结构,用于它们的无下划线对应物(GMutex、GCond 和 GPrivate),但似乎没有自己定义。 (在这里查看 GLib 本身)。虽然编译 GLib 似乎工作得很好,但 GStreamer 似乎不喜欢那样。想法?纯 C 并不是我真正的语言,所以也许我遗漏了一些东西。