VS2010运行DirectShow的错误—typedef void * POINTER_64 PVOID64
来源:互联网 发布:移动和大数据 编辑:程序博客网 时间:2024/06/05 06:08
根据于老师给的link,
http://wiki.opencv.org.cn/index.php/%E4%BD%BF%E7%94%A8DirectShow%E9%87%87%E9%9B%86%E5%9B%BE%E5%83%8F#.E4.BE.8B.E7.A8.8B
编译Directshow代码时出现如下问题:
error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
error C2146: 语法错误 : 缺少“;”(在标识符“Buffer”的前面)
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
网路上查了些资料,总结下原因大概是:
打开winnt.h文件,发现问题就是在winnt.h头文件中无POINTER_64的定义造成的。搜索vc下的头文件,发现在basetsd.h头文件中有POINTER_64的定义,而在winnt.h头文件中也包含了该头文件。
尝试了几种解决方案:
Solution 1:
通过调整IDE 工具-> 选项-> 项目vc++目录中包含文件include的顺序,将Platform SDK头文件目录放在Direct Show头文件目录前,使Direct Show需要的winnt.h所在文件夹在最上面。
Result:
这里尝试没有成功,问题依然存在,待解决,可能与Direct X不同。
Solution 2:
按照http://blog.sina.com.cn/s/blog_591a183f0100cahp.html的方法设置配置;
在command中添加/wd4430
error C4430被fix,但是error C2146错误仍然存在,
Solution 3:
typedef void *PVOID;
typedef void * POINTER_64 PVOID64;
在它之前加下:
#define POINTER_64 __ptr64
Result:
有效,编译通过,更改winnt.h文件需要赋予管理员权限。
Solution 4:
将winnt.h文件中的#include <basetsd.h>改为#include "basetsd.h"
Result:
有效,编译通过,更改winnt.h文件需要赋予管理员权限。
方案4是将包含文件更改,而方案3来是将未知类型define一个类型,我最后就用了4那么处理。
- VS2010运行DirectShow的错误—typedef void * POINTER_64 PVOID64
- typedef void * POINTER_64 PVOID64错误
- VS 编译 typedef void * POINTER_64 PVOID64错误
- 解决VS2005编译 typedef void * POINTER_64 PVOID64错误
- 解决VS 编译 typedef void * POINTER_64 PVOID64错误
- 解决VS 编译 typedef void * POINTER_64 PVOID64错误
- 解决 typedef void * POINTER_64 PVOID64; 问题
- 解决typedef void * POINTER_64 PVOID64; 问题
- typedef void * POINTER_64 PVOID64中,POINTER_64没有定义
- 解决typedef void * POINTER_64 PVOID64问题
- DirectShow的"PVOID64错误"
- VS2008 运行directshow的几个错误
- DirectShow 在VS2005/VS2010中环境配置和编译运行出现 winnt.h(5940)错误问题的解决
- cocos2d-x 在IDE vs2010 出现error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面)编译错误解决方案
- typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针
- typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针
- typedef void (*funcptr)(void)的含义
- typedef void(*Func)(void)的简单用途
- Android TextView文本文字修改实例
- Android高斯模糊制作启动界面
- 101 个 MySQL 的调节和优化的提示 --mysql优化
- 我的态度
- Java多线程同步总结之synchronized
- VS2010运行DirectShow的错误—typedef void * POINTER_64 PVOID64
- Ubuntu14.04无法识别Android设备解决方法
- 程序员代码面试常用算法汇总!
- Struts2文件上传之Servlet依赖fileupload组件实现
- 由于硬盘满了导致的redis连接失败
- 设计模式——适配器设计
- How to backup and restore database in SQL Server
- Java程序员应该知道的10个调试技巧
- VI 三种模式