又遇到debug和release版本表现不同的奇葩问题

vs2008件了个win32 C++工程,用了这些库ogre174,opencv,artag,artag是一个使用c语言写的静态库,增强现实用的,这个静态库是用vc6.0写的,刚开始是这样来做的:忽略libc.lib库,编译的时候遇到一个问题,然后自己定义一个

extern "C" { FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]}; }


问题貌似就解决了,但是release运行出错,调试运行release,提示freetype库初始化失败,用到字体的地方主要是那个mTrayMgr,托盘管理器,把和这个相关的东西注释,


调试运行release版本没有问题,但是直接运行release报内存读错误,直接运行和调试运行debug都正常,郁闷了吧,都是这个artag这个用vc6.0  c语言写的静态库搞的鬼


然后我就试着,对每个cpp文件设置他们的:属性  ---  c/c++  ----- 代码生成,里面的运行时库,选择:多线程(/MT),这样再从新编译然后就没有问题了,

这样设置就不需要extern "C" { FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]}; }这一句了。但还是忽略libc.lib。


看来涉及到这类问题的时候,根源还是这个运行时库的选择啊。




你可能感兴趣的:(又遇到debug和release版本表现不同的奇葩问题)