vc开发小结

1.出现“fatal error C1010: unexpected end of file while looking for precompiled header directive”

   (1)肯定是一个新添加的类的.cpp文件开头没包含stdafx.h,在该文件最前面加上即可。
   (2)有时可以使用右键点击项目工程中的该cpp文件,选择setting,在c/c++栏,选择PreCompiled headers,然后设置第一选项,选择不使用预编译头,解决这个问题。

 

2.error C2018: unknown character '0xa1' 非注释行中是否有全角的空格

 

3.error lnk2001 :

可能成因

1. 第一类:

  例如,你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain。或者,你用vc打开了一个.c/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数。vc这时的默认设置是针对控制台程序的。

2.第二类:程序没有添加必要的库

  当copy网上的源程序,在本机编译的时候,由于新建的工程没有把连接用的库,在连接的时候添加进去,所以一些函数、变量找不到定义的库文件,从而出错。

解决方法

1.第一类

  1. Windows子系统设置错误

  提示:

  libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main

  Windows项目要使用Windows子系统, 而不是Console, 可以这样设置:

  [Project] --> [Settings] --> 选择"Link"属性页,

  在Project Options中将/subsystem:console改成/subsystem:windows

  2. Console子系统设置错误

  提示:

  LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16

  控制台项目要使用Console子系统, 而不是Windows, 设置:

  [Project] --> [Settings] --> 选择"Link"属性页,

  在Project Options中将/subsystem:windows改成/subsystem:console

  3. 程序入口设置错误

  提示:

  msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16

  通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改

  为wWinMainCRTStartup, 所以需要重新设置程序入口:

  [Project] --> [Settings] --> 选择"C/C++"属性页,

  在Category中选择Output,

  再在Entry-point symbol中填入wWinMainCRTStartup, 即可

  4. 线程运行时库设置错误

  提示:

  nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex

  nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex

  这是因为MFC要使用多线程时库, 需要更改设置:

  [Project] --> [Settings] --> 选择"C/C++"属性页,

  在Category中选择Code Generation,

  再在Use run-time library中选择Debug Multithreaded或者multithreaded

  其中,

  Single-Threaded 单线程静态链接库(release版本)

  Multithreaded 多线程静态链接库(release版本)

  multithreaded DLL 多线程动态链接库(release版本)

  Debug Single-Threaded 单线程静态链接库(debug版本)

  Debug Multithreaded 多线程静态链接库(debug版本)

  Debug Multithreaded DLL 多线程动态链接库(debug版本)

  单线程: 不需要多线程调用时, 多用在DOS环境下

  多线程: 可以并发运行

  静态库: 直接将库与程序Link, 可以脱离MFC库运行

  动态库: 需要相应的DLL动态库, 程序才能运行

  release版本: 正式发布时使用

  debug版本: 调试阶段使用

2.第二类

  1. 先弄清楚到底缺了哪些库,再在project=》setting=》link里面的moldul/lib 添加这些库的文件。

  2. 可以用以下形式在源程序里面添加下面代码:

  #pragma comment(lib, "openGL32.lib");

  #pragma comment(lib, "glu32.lib");

  #pragma comment(lib, "glaux.lib");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值