我需要构建一个可视化的c ++解决方案(.dsp VC ++ 7.1),该解决方案是由其他人在2005年编写的。我正在尝试在VS2010试用版中编译解决方案,但它给了我一些错误,如下所述:< / p>
error C3867: 'CServerSocket::SelfDestruct': function call missing argument list; use '&CServerSocket::SelfDestruct' to create a pointer to member
error C2039: 'iterator_category' : is not a member of 'CommandDispatchInserter' c:\program files\microsoft visual studio 10.0\vc\include\xutility
error C2146: syntax error : missing ';' before identifier 'iterator_category' c:\program files\microsoft visual studio 10.0\vc\include\xutility
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft visual studio 10.0\vc\include\xutility
error C2602: 'std::iterator_traits<_Iter>::iterator_category' is not a member of a base class of 'std::iterator_traits<_Iter>' c:\program files\microsoft visual studio 10.0\vc\include\xutility
从我的调查看来,从VS2005开始,各种库的不同实现导致错误,我认为代码完全不符合标准,这也是一个因素。而不是修改代码以适应VS的要求(我对此无能为力)我想知道是否有一种方法来编译这个i nit的当前状态,而不是安装VS2003的实例。我尝试过使用minGW for windows但没有运气。它似乎不喜欢MFC库。有没有人对最有成效的路线有任何建议?
提前致谢
答案 0 :(得分:3)
第一个错误(函数调用缺少参数列表;使用'&amp; CServerSocket :: SelfDestruct')是VS2003和VS2005之间编译器的更改,以更符合标准。据我所知,这里唯一的解决方案是修改代码,如消息所示。我们几年前升级VS时遇到过几起这样的情况;修复它们并不难。
我认为你不能在不修改代码的情况下在VS2010下编译它。我会一个接一个地修理它们;当然,似乎其他四个错误都是连在一起的,如果你弄清楚它有什么问题,那么它可能不需要太多的修改。发布导致它的代码将有助于我们其他人。
答案 1 :(得分:1)
对于第一期,请使用&amp;显式地获取指向成员的指针。没有其他方法可以使用VS9或10进行编译。这是一个易于添加的机械方法,需要很少的C ++知识。
第二个问题是,我认为你错过了某个'typename'限定符。这更难,如果你不了解C ++,你只能做很少的事情。修复&amp;发布第一个和后期编译器日志和代码以获得更好的答案。
至于你的实际问题,没有办法让这个用VS的新版本编译;有一些“向后兼容性”编译器设置,但这些问题不在其中。你也不能使用除Visual Studio之外的任何编译器编译MFC代码,因此MingW路径无法花费更多时间。
所以,你的选择是:
答案 2 :(得分:0)
通过搜索MSDN中的错误代码,您可以获得有关编译器错误的基本原理的详细信息,例如。如果声明的函数没有显式返回类型,则会发生C4430。 Visual C ++ 6在这里假设int
,以后的版本将无法编译。
有关MSDN中的详细信息,请参阅here - 其他错误代码搜索(在本例中为字符串C4430
)也可以使用。
由于编译器一致性工作,可能会生成此错误 这是为Visual C ++ 2005完成的:所有声明都必须明确 指定类型;不再假设int。