vc6中errorc2011的原因

vc6中errorc2011的原因

ID:8822400

大小:18.00 KB

页数:2页

时间:2018-04-08

vc6中errorc2011的原因_第1页
vc6中errorc2011的原因_第2页
资源描述:

《vc6中errorc2011的原因》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、vc6中errorC2011:'fd_set':'struct'typeredefinition的原因网友这样说"一直都用gcc开发,好久没有用VC,前两天写代码的时候装了一大堆插件,visualAssistX,WndTabs,Spelly,ProjectLineCounter,SourceStylerC++,用的挺爽的,感觉比VI好用多了,但是一编译,噩梦就开始了。语法错误到不多,很快就改好了。接下来就遇到了一个错误errorC2065:'TryEnterCriticalSection':undeclaredidentifier很奇

2、怪,同时关键段的其他函数没有这样的问题,偏偏只有这个函数有,只好求助于google,发现需要添加一个宏定义,_WIN32_WINNT=0x500,意思应该就是只从某一版本的windows开始支持,好像是win2000,以前的就不需要支持了,这样就可以支持一些新的函数,我想这个TryEnterCriticalSection就应该是其中之一。这个问题没有了,又出了新的问题,一下子跳出了很多errorC2011。就像这个一样errorC2011:'fd_set':'struct'typeredefinition,而且还有提示winsock.

3、h和winsock2.h中的定义冲突macroredefinition。开始以为这个问题就是重复定义,可以找了半天没有发现winsock2.h的影子,就很奇怪,查了网上的帖子也没有发现这样的情况,其他人虽然有相同的错误,但是大多都是使用了stdafx.h,里面的定义冲突了,记得以前写VC的时候,项目建造的时候可以选是否支持网络,但是这次我建的是一个空的windowsconsole项目,没有使用,所以还是没办法。查了半天还是没有结果。突然一时好奇想看看_WIN32_WINNT=0x500这个宏会带来什么样的变化,于是我就查了一下这方面的

4、资料,没想到在windows.h里发现这样一段代码#if(_WIN32_WINNT>=0x0400)#include#include#else#include#endif哈哈,怪不得重复定义呢,把包含的头文件winsock.h改成了windows.h,问题解决了。接下来又是errorC2065:'_beginthreadex':undeclaredidentifiererrorC2065:'_endthreadex':undeclaredidentifie

5、r奇怪,怎么会不支持多线程的呢,正好手头还有一个以前的项目里面也用到了这两个函数,对比了一下项目文件,发现有个选项是/MLd,原来的那个项目里是/MDd,我直接在项目文件里改过来,发现问题解决,后来在projectSettings->C/C++->codegeneration->userun-timelibrary里面发现了是否支持多线程的选择。编译全通过了,没想到link还是除了问题,明明有个函数声明和定义都有了,但是link就是找不到,出现了几个errorLNK2001:unresolvedexternalsymbol,而且也不知

6、道该google什么关键字,看来一些可能产生errorLNK2001的原因,没一个合适我,后来还是一个同时帮了我,原来是我用了一个以前自己写的文件,文件的扩展名一定是.c,而不是.cpp。一般C++编译器对.c文件使用C方式编译,对.cpp文件使用C++方式编译(编译器会自动定义__cplusplus)。而C++的I/O流只能在C++编译方式下工作。有两个方法解决最简单的是改文件扩展名为.cpp。或者在头文件里的函数声明部分加这样的东西#ifdef__cplusplusextern"C"{#endif函数申明#ifdef__cplus

7、plus};#endif我用了第一个方法,又发现了setsockopt这个函数的小问题,原来是C++编译器对类型转化比C来的严格造成的。终于程序可以跑了起来,看来VC虽然比GCC用起来方便,但是很多东西都掩藏在预处理和工具的设置上,改起来很不方便,像那个/MDd表示可以debug的多线程库,根本无法直接理解,不像用GCC的时候,全是在makefile中写清楚,就算不懂,但是很容易理解,改起来也比较方便。不过好在这些开发环境的问题不会太多,遇到过了以后就好了。"这个问题还是比较普遍,我的做法是在windows.h前先winsock2.h

8、#include#include

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。