我正在开发一个C#WPF应用程序,它使用PInvoke调用非托管C ++ DLL函数。 PInvoke函数从WPF线程调用,其公寓状态设置为MTA。 PInvoke调用工作正常。
非托管C ++ DLL使用DirectShow函数创建一个窗口来显示视频源。例如。调用PInvoke函数初始化DirectShow时调用CoInitializeEx(NULL, COINIT_MULTITHREADED)
。 DirectShow代码工作正常(没有看到错误)。它应该打开一个窗口并显示视频输入。但是窗口没有打开(它会立即打开,然后消失)。
知道为什么直接显示窗口没有打开。据我所知,没有什么能阻止我从非托管dll打开一个窗口。
编辑:当我从普通的C#应用程序(没有wpf)调用DLL时,我得到相同的结果。