今天把多条鱼的行为观测程序拿给lab member去分析数据,之前也在其它机器上运行过该程序,没出现什么问题。
今天一台32位的win7和64位的win7运行,出现了一些问题,记录下来,总结经验。
1. 0xc000007b 错误 -- 32位的opencv程序在64位系统上的问题
之前在调试其它cv程序的时候遇到过这种错误。引起该问题原因是因为win7里的directx版本没升级,将其升级后问题解决。
(升级地址: http://www.microsoft.com/zh-cn/download/details.aspx?id=35)
但这次不一样,程序中没用到dx技术。而且,我也进行了相应的升级后,问题依旧!
同时也找出一些不同答案,可能是由tbb的dll调用引起的问题,详细参见下面的文章。
( http://blog.csdn.net/daiyuchao/article/details/7618572 )
原因在于32bit的opencv程序所用的cv24*.dll会加载所有关联库,包括tbb.dll (tbb_debug.dll)。 系统就是自动寻找tbb.dll,但是在64位系统下,系统调用的是64位的tbb.dll。因此造成了不兼容的问题,这里就出现了 0xc000007b 错误。上面文章给的办法是先把tbb从系统路径中移除,但是把32位的tbb复制到相应位置。
由于这机器也没安装过tbb,直接把32位的tbb复制到同一文件夹下问题就解决了。
2. vs2010运行库(runtime library)
32位程序,在64位系统下运行,应该安装的vc 运行库是x86版,不是x64版!
没安装运行库的机器上会出现缺少MSVCP100.dll的提示,一般来说安装运行库之后就可以解决问题。
但装过之后又提示缺少MSVCP80.dll,让我觉得很异常。这个文件应该是以前版本的运行库里的。
由于我的release版本是采用静态编译的,我怀疑这个问题可能与静态编译有关,或者跟前面的tbb有关系。
把程序重新进行了动态编译后,又把tbb.dll复制过来,问题解决了。
但是最终是什么原因造成的还没具体分析。