一、vc网络编程中遇到一个编译问题,原来是少了WSOCK32.LIB。

在 project-->settings-->Link-->Object/Library modules 中加入库WSOCK32.LIB即可。

在VC中进行WINSOCK的API编程开发的时候,需要在项目中使用下面三个文件,否则会出现编译错误。

  1.WINSOCK.H: 这是WINSOCK API的头文件,需要包含在项目中。

  2.WSOCK32.LIB: WINSOCK API连接库文件。在使用中,一定要把它作为项目的非缺省的连接库包含到项目文件中去。

  3.WINSOCK.DLL: WINSOCK的动态连接库,位于WINDOWS的安装目录下。

--------------------Configuration: Example1 - Win32 Debug--------------------
Linking...
error LNK2001: unresolved external symbol _connect@12
error LNK2001: unresolved external symbol _htons@4
error LNK2001: unresolved external symbol _inet_addr@4
error LNK2001: unresolved external symbol _socket@12
error LNK2001: unresolved external symbol _closesocket@4
error LNK2001: unresolved external symbol _send@16
error LNK2001: unresolved external symbol _recv@16
error LNK2001: unresolved external symbol _WSAAsyncSelect@16
error LNK2001: unresolved external symbol _accept@12
error LNK2001: unresolved external symbol _listen@8
error LNK2001: unresolved external symbol _bind@12

二、vc数据库SQL编程中遇到一个问题,原来是少了odbc32.lib。

在 project-->settings-->Link-->Object/Library modules 中加入库odbc32.lib 即可。

mfc程序调用了odbc api,连接时出错:

error   LNK2001:   unresolved   external   symbol   _SQLConnect@28
error LNK2001: unresolved external symbol _SQLFetch@4
error LNK2001: unresolved external symbol _SQLBindCol@24
error LNK2001: unresolved external symbol _SQLFreeHandle@8
error LNK2001: unresolved external symbol _SQLExecDirect@12
error LNK2001: unresolved external symbol _SQLAllocHandle@12
error LNK2001: unresolved external symbol _SQLSetEnvAttr@16
error LNK2001: unresolved external symbol _SQLDisconnect@4

三、vc OpenCV图像处理编程中遇到一个问题,原来是少了cv.lib cvaux.lib cxcore.lib highgui.lib。

在 project-->settings-->Link-->Object/Library modules 中加入库cv.lib cvaux.lib cxcore.lib highgui.lib 即可。

error LNK2001: unresolved external symbol _cvReleaseImage
error LNK2001: unresolved external symbol _cvWaitKey
error LNK2001: unresolved external symbol _cvDrawContours
error LNK2001: unresolved external symbol _cvReleaseMemStorage
error LNK2001: unresolved external symbol _cvDestroyWindow
error LNK2001: unresolved external symbol _cvFindContours
error LNK2001: unresolved external symbol _cvCvtColor
error LNK2001: unresolved external symbol _cvCreateImage
error LNK2001: unresolved external symbol _cvGetSize
error LNK2001: unresolved external symbol _cvShowImage
error LNK2001: unresolved external symbol _cvLoadImage
error LNK2001: unresolved external symbol _cvNamedWindow
error LNK2001: unresolved external symbol _cvCreateMemStorage

四、vc OpenGL三维编程中遇到一个问题,原来是少了OpenGL32.lib GLu32.lib GLaux.lib。

在 project-->settings-->Link-->Object/Library modules 中加入库OpenGL32.lib GLu32.lib GLaux.lib 即可。

error LNK2001: unresolved external symbol _gluPerspective@32
error LNK2001: unresolved external symbol _gluLookAt@72
error LNK2001: unresolved external symbol __imp__glLoadIdentity@0
error LNK2001: unresolved external symbol __imp__glMatrixMode@4
error LNK2001: unresolved external symbol __imp__glViewport@16
error LNK2001: unresolved external symbol __imp__glHint@8
error LNK2001: unresolved external symbol __imp__glDepthFunc@4
error LNK2001: unresolved external symbol __imp__glEnable@4
error LNK2001: unresolved external symbol __imp__glClearDepth@8
error LNK2001: unresolved external symbol __imp__glClearColor@16
error LNK2001: unresolved external symbol __imp__glShadeModel@4
error LNK2001: unresolved external symbol __imp__glEnd@0
error LNK2001: unresolved external symbol __imp__glVertex3f@12
error LNK2001: unresolved external symbol __imp__glBegin@4
error LNK2001: unresolved external symbol __imp__glTranslatef@12
error LNK2001: unresolved external symbol __imp__glClear@4
error LNK2001: unresolved external symbol __imp__wglDeleteContext@4
error LNK2001: unresolved external symbol __imp__wglMakeCurrent@8
error LNK2001: unresolved external symbol __imp__wglCreateContext@4

五、vc VFW视频采集编程中遇到一个问题,原来是少了VFW32.Lib

在 project-->settings-->Link-->Object/Library modules 中加入库VFW32.Lib 即可。

error LNK2001: unresolved external symbol _capCreateCaptureWindowA@32

在创建项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有:

libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex

错误可能引起的原因:

  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版本: 调试阶段使用

六、程序没有添加必要的库。

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

texture.obj : error LNK2001: unresolved external symbol __imp__glEnable@4
texture.obj : error LNK2001: unresolved external symbol __imp__glTexEnvf@12
texture.obj : error LNK2001: unresolved external symbol __imp__glTexParameterf@12
texture.obj : error LNK2001: unresolved external symbol __imp__glTexImage2D@36
texture.obj : error LNK2001: unresolved external symbol __imp__glPixelStorei@8
texture.obj : error LNK2001: unresolved external symbol _auxDIBImageLoadA@4

解决方法:

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

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

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

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

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

vc编译报错 unresolved external symbol __imp__PlaySoundA@12 解决办法:

添加Winmm.lib和 头文件中包含 Mmsystem.h

选择"project"->"setting"->"link"->"Object/library modules"然后添加"Winmm.lib"就可以了。

解决VC几个编译问题的方法——好用的更多相关文章

  1. win10解决vc++6.0不兼容问题方法

    这个方法我是可以用了 所以就写在着勒... 1 这个是百度云链接 先下载这个东西 放在电脑上 http://pan.baidu.com/s/1c2MihLA(一个MSDEV.EXE) 2然后找到这个目 ...

  2. 转:如何解决VC "应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe"问题

    如何解决VC "应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe"问题   引用链接 http://blog.csdn.net/pizi0475/artic ...

  3. VC++2010下编译STLport,Boost

    VC++2010下编译STLport,Boost 最近在想向Boost转移,努力掌握Boost代码的过程中, STLport版本:5.2.1 Boost版本:1.4.6.1 (1.4.7.0也OK) ...

  4. [转]VC的DDK编译环境构建

    [转]VC的DDK编译环境构建 http://blog.csdn.net/skdev/article/details/1336935   1 环境状况 Windows XP SP1 NTDDK(win ...

  5. vc中调用Com组件的方法详解

    vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口:   IGetRes--方法Hello(),   IGet ...

  6. 用VC实现竖写汉字的方法

    中国人自古就有自右至左.从上到下书写汉字的习惯.而当我们在自己所编写的应用程序中使用输出函数输出的总是自左至右的横排文字.有没有可能在我们的应用程序中实现竖写汉字的效果呢?笔者偶然发现了一种利用VC实 ...

  7. PHP编译安装时常见错误解决办法,php编译常见错误

    PHP编译安装时常见错误解决办法,php编译常见错误 1.configure: error: xslt-config not found. Please reinstall the libxslt & ...

  8. VC++6.0编译环境介绍

    大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在"使用"它,而不会想去"了解"它.因为它只是一个工具,我 ...

  9. VC++ 使用预编译头

    一.使用默认的预编译头       要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的代码和其他的头文件,然后我们用这个头文件来生成一个预编译头文件(.pch文件),想必大家都知 ...

随机推荐

  1. Android中ListView 控件与 Adapter 适配器如何使用?

    一个android应用的成功与否,其界面设计至关重要.为了更好的进行android ui设计,我们常常需要借助一些控件和适配器.今天小编在android培训网站上搜罗了一些有关ListView 控件与 ...

  2. Stack与Heap的区别

    申明:这里所说的栈和堆是程序内存管理中的栈和堆,而不是数据结构里的栈和堆. (1)保存的内容不同:栈里保存的是局部变量,而堆里保存的是动态申请的变量. (2)栈里的内存系统自动申请和释放,程序执行出申 ...

  3. C++ 构造函数中调用虚函数

    我们知道:C++中的多态使得可以根据对象的真实类型(动态类型)调用不同的虚函数.这种调用都是对象已经构建完成的情况.那如果在构造函数中调用虚函数,会怎么样呢? 有这么一段代码: class A { p ...

  4. Web Application Project is configured to use IIS. Unable to access the IIS metabase.(配置为使用IIS Web应用程序xxxx项目。无法访问IIS元数据库。)

    这几天重装系统,装了win10,居然用vs2013打开项目出现下面这个提示错误,搞了很久才知道原因: Even though I am an administrator on the machine, ...

  5. C# listview 拖动节点

    /// <summary> /// 当拖动某项时触发 /// </summary> /// <param name="sender"></ ...

  6. Mysql的float类型造成的困扰总结

    因为换了工作正在学习使用MySQL,今天领导提出了一个问题,如下: X列是累加值,A列是每日新增值,那么X2应该是X1+A2,而且存储过程里也是这样计算的.可是奇怪的是X2的值却总是和正确值(2396 ...

  7. sql 把特定数据排在最前面

    感谢www.baidu.com/p/dongfanghong_1 sql大神,简单的语法运用起来简直活了. 第一法] select * from table where name='D' UNION ...

  8. ubuntu更新删除旧内核的shell脚本

    ubuntu经常提示要更新内核,更新几次后 /boot目录就满了,再更新就提示目录没空间了,这时候就需要删除不用的老旧内核,之前都是uname, grep, dpkg之类的命令一条条敲,然后用眼睛看需 ...

  9. 【Android Demo】简单手机通讯录

    Android 系统给我们提供了访问通讯录的接口,通过接口获取通讯录信息.Adapter 与 View 的连接主要依靠 getView 这个方法返回我们需要的自定义 view. ListView 是 ...

  10. 如何利用ZBrush中的DynaMesh创建身体(一)

    之前的ZBrush教程中我们用Extract抽出功能演示了头发的立体雕刻方法,本讲将对已完成的头部模型添加躯干,使用DynaMesh创建身体的方法,以及人体比例和结构的介绍. 查看详细的视频教程可直接 ...