纯c的工程,引用atlbasee.h文件出错

luoliba007 2013-07-08 05:03:17
我现在有一个纯c的工程,这个工程是视频处理的,视频处理的部分选用的vfw技术,现在我想替换成directshow,directshow的环境我已经全编译好了,库文件也已经生成,但是在调用的时候,工程提示我atlbase.h文件需要c++编译,好像这个牵扯到了c语言调用mfc和atl的问题,我在网上搜了一下,试用了很多的办法,还是没有成功,请教知道的大侠指点,谢谢。
...全文
683 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ynwlgh 2013-09-06
  • 打赏
  • 举报
回复
最新版的MFC和WTL是不兼容的. 别的你自己看着办.
luoliba007 2013-08-29
  • 打赏
  • 举报
回复
时隔这么久,还是没有人知道答案么,别沉了呀。。。
luoliba007 2013-07-10
  • 打赏
  • 举报
回复
我没设置好,希望4楼的大侠能看到 我之所以要在纯C的工程调用是因为我现在手上有一个大型的开源纯C源码,如果要把这样一个大的工程转换成CPP的,我担心会出现很多各种各样的错误,但是这个开源的源码之前采用的vfw技术不够成熟,在win7环境下有无法改变的漏洞,我只能用directshow来替换。 所以请教各位大侠,有没有好的办法,可以让我在纯c的环境下调用atl的内容。
redui 2013-07-10
  • 打赏
  • 举报
回复
你的目的不是为了调用ATL,而是为了调用COM接口,一定要记住ATL只是一个工具。 如果只是纯粹想用C调用COM接口(COM本身是多语言兼容的),也是可以做到的,但是一些封装类、智能指针等C++用的工具就没法用了,ATL库肯定是用不了的,也不能直接用dshow库的头文件,这些人工写的头文件极有可能是按照C++的标准来写的。 正确的做法是:通过#import指令直接导入dshow的类型库,第一次编译这个#import语句时会生成dshow中的所有接口、属性和方法、结构体、枚举、各种GUID定义的头文件,这个生成的头文件同时兼容C和C++语言,在C语言里,接口方法都变成了一个个函数定义。仔细研究一下这个头文件就能知道该如何调用接口方法。
redui 2013-07-09
  • 打赏
  • 举报
回复
ATL是C++模板库,C语言是用不了的。不知道楼主干嘛一定要用C语言,用CPP文件一样可以写C代码
傻X 2013-07-09
  • 打赏
  • 举报
回复
纯C调用mfc和atl的话,也需要MFC没用扩展,且用extern “C”标记导出,且类型是对应的一般类型。不然对应地址找不到的。
luoliba007 2013-07-09
  • 打赏
  • 举报
回复
没有人知道么,自己顶一顶先。
luoliba007 2013-07-08
  • 打赏
  • 举报
回复
标题写错了,头文件多打了一个e,是atlbase.h文件

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧