今天在使用LibXIStream 对视频采集卡进行开发时遇到了给的sample中的程序没问题,而自己写的却无论如何都会失败,打不开相应的采集卡。具体问题时出在这样一个数据结构上的:
typedef struct _VIDEO_CAPTURE_INFO {
XI_ADAPTER_MODEL adapterModel;
XI_DEVICE_TYPE deviceType;
TCHAR szName[_MAX_VIDEO_CAPTURE_NAME];
TCHAR szDShowID[_MAX_VIDEO_CAPTURE_DSHOW_ID];
} VIDEO_CAPTURE_INFO;
其中的两个字符串数组szName与szDShowID要么为空,要么为正确赋值成功,导致之后的功能无法正常运行。在纠结了一段时间后,终于把问题集中到了TCHAR上,然后我分别在sample的例子中和我自己写的程序中找到了对TCHAR的定义:
#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef unsigned char TCHAR;
#endif
然后发现了问题就是出在编码方式上,两个程序一个使用的UNICODE编码,而另一个不是,所以才导致了同样的代码,一个能正确执行,另一个却不行的情况。