VC2008 Express +OpenCV2.0使用CameraDS类的调试经历

来源:互联网 发布:c 小程序源码下载 编辑:程序博客网 时间:2024/05/29 08:08

原文:

http://www.opencv.org.cn/forum.php?mod=viewthread&tid=10176




    最近在Microsoft Visual C++ 2008 Express 和 OpenCV 2.0下使用版主Shiqi Yu 开发的CCameraDS类,在调试过程中出现了很多错误。参照他的贴子(下称文献1)
<!-- m --><a class="postlink" href="http://www.opencv.org.cn/index.php?title=%E4%BD%BF%E7%94%A8DirectShow%E9%87%87%E9%9B%86%E5%9B%BE%E5%83%8F&oldid=9519">http://www.opencv.org.cn/index.php?titl ... oldid=9519</a><!-- m -->
     同时也参照下面博客中的内容(下称文献2)解决了其中的一些问题。
<!-- m --><a class="postlink" href="http://blog.csdn.net/chenyusiyuan/archive/2009/10/08/4643313.aspx">http://blog.csdn.net/chenyusiyuan/archi ... 43313.aspx</a><!-- m -->
     但又遇到一些别的问题,经查找多方资料终于调试成功。现在汇总如下,希望对后来者有所帮助,同时也感谢文献作者。

1、        按照文献1所说的“在vc++2005开发环境下的使用说明”完成步骤1-3
2、        编译报错,说找不到atlbase.h,于是安装VC++6.0,并添加相应的库,下图所示为include库。需要指出的是,添加库的顺序尽量按图中顺序来,否则可能出现一些错误,这个在文献2中有阐述。


3、接着编译,又报如下错误
atlbase.h(770) : error C2065: 'T' : undeclared identifier
atlbase.h(818) : error C2061: syntax error : identifier 'T'   
解决办法是,在出现错误的代码前面增加以下语句
template <class T>

还有一个错误是关于InlineIsEqualGUID函数的,修改方法如下
修改 InlineIsEqualGUID() 为::ATL::InlineIsEqualGUID()


4、接着编译,又报如下错误
pen.obj : error LNK2019: unresolved external symbol __RTC_CheckEsp referenced in function &quot;void __stdcall `vector constructor iterator'(void *,unsigned int,int,void * (__thiscall*)(void *))&quot; (??_H@YGXPAXIHP6EPAX0@Z@Z)
CameraDS.obj : error LNK2001: unresolved external symbol __RTC_CheckEsp
Open.obj : error LNK2001: unresolved external symbol __RTC_Shutdown
CameraDS.obj : error LNK2001: unresolved external symbol __RTC_Shutdown
Open.obj : error LNK2001: unresolved external symbol __RTC_InitBase
CameraDS.obj : error LNK2001: unresolved external symbol __RTC_InitBase
解决方法是,在 Project -> Properties -> Configuration Properties ->C/C++ -> code generation中将Basic Runtime Checks 设置成default; Buffer Security Checks设置成 (/GS-)

5、接着编译,又报如下错误
unresolved external symbol &quot;public: void __thiscall CCameraDS::CloseCamera(void)&quot;
由于在第1步中只是将camerads.h,.cpp复制到工程中,并没有真正添加进来;需要在Solution Explorer 中 在camerads.h,.cpp文件处点右键,选择Include in Project,把它们真正包含到项目中来

6. 接着编译,又报如下错误
error LNK2019: unresolved external symbol ___iob_func referenced in function _main
error LNK2019: unresolved external symbol ___CxxFrameHandler3 referenced in function __ehhandler$_main
error LNK2001: unresolved external symbol ___CxxFrameHandler3
CameraDS.obj : error LNK2001: unresolved external symbol _IID_ISampleGrabber
CameraDS.obj : error LNK2001: unresolved external symbol _CLSID_NullRenderer
CameraDS.obj : error LNK2001: unresolved external symbol _CLSID_SampleGrabber
CameraDS.obj : error LNK2001: unresolved external symbol _LOOK_UPSTREAM_ONLY
CameraDS.obj : error LNK2001: unresolved external symbol _CLSID_CaptureGraphBuilder2
CameraDS.obj : error LNK2001: unresolved external symbol _IID_ICaptureGraphBuilder2

解决办法是,把vc98\lib也放到最下面。
  

这时编译、链接均成功,找个摄像头一试,可以实现相应功能。


不过,在链接时出现一个警告如下
LINK : warning LNK4044: unrecognized option '/wd4430'; ignored
这是按文献2的提示操作的步骤
“在Project -> Properties -> Configuration Properties -> Linker -> Command Line的Additional Options 中添加/wd4430: 
此时,把这一步删去,发现编译、链接均成功,这个警告也消失。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刚怀孕长了疱疹怎么办 吃完饭恶心想吐怎么办 减肥药吃了心慌怎么办 吃多了恶心想吐怎么办 想吐怎么办最快最有效 想吐又吐不出来怎么办 3岁宝宝反胃呕吐怎么办 2岁宝宝反胃呕吐怎么办 突然恶心想吐是怎么办 孕4个月反胃呕吐怎么办 怀孕2月反应大怎么办 狗吐拉稀不吃饭怎么办 狗狗咳喘怎么办最有效 半永久纹眉失败怎么办 纹的眉毛太细了怎么办 眉毛颜色做深了怎么办 半永久眼线不掉怎么办 移植9天来月经怎么办 月经迟迟不来该怎么办 lol晋级赛输了怎么办 激素正常的多囊怎么办 右侧输卵管通而不畅怎么办 小该咳嗽老不好怎么办 孩子吓着了怎么办最快 2个月宝宝吓到了怎么办 3个月宝宝吓到了怎么办 宝宝吓着了发烧怎么办 好几个月不遗精怎么办 孕妇吃了黑橄榄怎么办 内膜4mm来月经了怎么办 吃了伟哥没效果怎么办 维a酸乳膏副作用怎么办 颈椎病引起的头晕恶心怎么办 经常头疼怎么办最快最有效 感昌了头晕乏力怎么办 来例假喝啤酒了怎么办 来月经喝啤酒了怎么办 吃的油腻长痘怎么办 兔子拉黑色稀便怎么办 宝宝补钙便秘了怎么办 吃了肾宝片上火怎么办