使用c#的directshowLib 直接播放yuv的参数设置

2025-05-13 02:13:39
推荐回答(1个)
回答(1):

那是因为C++与C#中的数据类型不对应而照成的。你可以使用C#调用C++ DLL的导出函数,在你的C#中实现即可。C++的导出函数一般在SDK中会详细说明,你对着改抄就可以了。下面给点例子:例如:C++的导出函数为:long WINAPI LoadDRV(void);你在C#中使用对应的方式声明这个函数的对应函数[DllImport("Tc08a32.dll", EntryPoint = "LoadDRV", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern Int32 LoadDRV();DllImport的语法你可以在MSDN上面找到详细的说明,这里对给出的示例做一下简单的说明括号中的第一个String参数是表明你要导入的DLL的目标路径,可以是别人C++导出函数的路径EntryPoint设置后,可以主动的搜索入口函数,可要可不要。CharSet是设置你接收时的字符类型的,这个很重要,某些时候,通过改变这个值的设置可以得到你的理想值。CallingConvention是指的一个导出标准,一般在C++的SDK中也可以看到这种导出标准,是什么,就对应的用什么。 注意使用时的类型转换,因为变量的类型不同,则使用不同的对应关系,这个网上也有很多的介绍,很简单。唯一需要注意的是一些指针类型,因为C#为安全机制没有指针一般的,C++中的 Char * 在C#中可以使用一个String来传值如果是LPSTR的话,那就需要使用一个char[]来实现,具体char[]有多长,你要根据你的SDK中的说明具体实现。实现完你需要的函数之后,你即可在你的项目中调用了。