首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++编译器的有关问题

2012-03-08 
C++编译器的问题我这个问题有点特殊,请大家仔细看我的描述,然后再作答,谢谢!前言:最近涉及到不少跨平台编

C++编译器的问题
我这个问题有点特殊,请大家仔细看我的描述,然后再作答,谢谢! 

前言: 
最近涉及到不少跨平台编程和移植的情况。
主要是把Unix或Linux的程序,移植到Windows下编译使用。
我这里提出的问题,就是在一个Unix程序的移植过程中产生的。

问题描述:
我有一个程序,移植到Windows下,经过一些修正和处理后,用VS2008建了工程文件,并编译之。
结果是release和debug模式都很正常,且生成A.exe文件。但是程序运行到一半的时候就出错了,察看错误报告里显示: 
AppName: A.exe AppVer: 0.0.0.0 ModName: msvcr90.dll 
ModVer: 9.0.21022.8 Offset: 0006d0f0 
似乎问题出在msvcr90.dll的调用上。(可以肯定的是,绝对不是缺少这个文件造成的。) 

请大家不要忙着发表建议,再看看我接下来的描述。
我把同样的代码,在Code::Blocks上编译,这次用的是C::B默认的Mingw版g++编译器。
这次的编译当然也很顺利。且生成的程序(release和debug版)运行都非常正常,且没有任何错误。 

所以我的问题就是,为什么VC上编译出来的程序,运行的时候出错,而C::B上的就很正常? 

附加信息:
我曾察看VC的项目属性,发现C/C++选项卡的运行时库默认是使用多线程DLL /MD。
我尝试把他设为非DLL的多线程库 /MT (主要目的是避免调用那个dll)。 
结果这次编译出来的程序还是运行到一半出错。这次显示的错误是出在A.exe上了: 
AppName: A.exe AppVer: 0.0.0.0 ModName: A.exe 
ModVer: 0.0.0.0 Offset: 00075b66 

问题总结:
综上所述,大家认为,问题的根本原因到底出在哪里?代码本身似乎没有问题,否则C::B下编译出来的程序就不会正常运行。
问题应该是出在VC上,我猜想可能是VC的项目设置里,也可能是VC的编译器上,说不准。
所以,请有经验的高手帮忙指教,期望找到合理的答案。谢谢!


[解决办法]
mark
[解决办法]
貌似你有部分代码对VC支持的不好啊!
[解决办法]
在VC中调试,看出错在哪里
[解决办法]
G 00075b66 完美解决问题。

vc实现c库函数的方式和gcc不一样,你把那些使用了gcc特性的编码修改即可。

热点排行