我想升级我的Windows WPF C#应用程序以使用GStreamer 1.4而不是GStreamer 0.10。 我在Linux上构建了gstreamer-sharp而没有任何错误,dll大小为1.24 MB,这似乎是合理的,当我从我的C#应用程序中引用gstreamer-sharp.dll时,我使用的所有类和方法名称都已解析。好。
我在Windows上构建粘合剂时遇到问题。我从gstreamer-sharp中获取了一个Visual Studio项目模板,将输出从应用程序更改为库,从gstreamer-sharp添加了gobject.c和generated.c到项目,添加了WinDDK的路径来解析msvcrt_winxp.obj并构建了libgstreamer -1.0-0.dll,大小为50.5 kB(看起来很小,不应该是它的3倍大吗?)。 当我尝试将它与C#应用程序一起使用时,我在调用Gst.Application.InitCheck(ref args)时出错:
无法找到名为' gst_value_list_get_type'的入口点在DLL' libgstreamer-1.0-0.dll'
中
难怪它抱怨,generate.c中不存在这样的方法。 我做错了什么?
答案 0 :(得分:2)
gstreamer-sharp没有使用胶水库来进行本机的所有调用。胶水库仅用于访问GObjects和Opaque类型的字段。胶合库只返回字段的填充以计算管理端字段的偏移量。胶水尺寸似乎很好,因为它只是一个小包装来计算偏移量。 使用Application类时更可能导致错误,因为它在访问时初始化所有GstValue类型。也许Windows二进制文件已经破坏,并且不包含gst_value_list_get_type,尽管这很奇怪。你能尝试编写一个小C程序来调用该函数来查看是否有任何错误。如果C程序工作正常,那么.NET可能找不到你的库,尽管在这种情况下你通常会得到一个DllNotFoundException。
找到包含visual studio项目的存储库