博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决VC几个编译问题的方法——好用
阅读量:4606 次
发布时间:2019-06-09

本文共 6985 字,大约阅读时间需要 23 分钟。

一、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@12error LNK2001: unresolved external symbol _htons@4error LNK2001: unresolved external symbol _inet_addr@4error LNK2001: unresolved external symbol _socket@12error LNK2001: unresolved external symbol _closesocket@4error LNK2001: unresolved external symbol _send@16error LNK2001: unresolved external symbol _recv@16error LNK2001: unresolved external symbol _WSAAsyncSelect@16error LNK2001: unresolved external symbol _accept@12error LNK2001: unresolved external symbol _listen@8error 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@28error   LNK2001:   unresolved   external   symbol   _SQLFetch@4error   LNK2001:   unresolved   external   symbol   _SQLBindCol@24error   LNK2001:   unresolved   external   symbol   _SQLFreeHandle@8error   LNK2001:   unresolved   external   symbol   _SQLExecDirect@12error   LNK2001:   unresolved   external   symbol   _SQLAllocHandle@12error   LNK2001:   unresolved   external   symbol   _SQLSetEnvAttr@16error   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 _cvReleaseImageerror LNK2001: unresolved external symbol _cvWaitKeyerror LNK2001: unresolved external symbol _cvDrawContourserror LNK2001: unresolved external symbol _cvReleaseMemStorageerror LNK2001: unresolved external symbol _cvDestroyWindowerror LNK2001: unresolved external symbol _cvFindContourserror LNK2001: unresolved external symbol _cvCvtColorerror LNK2001: unresolved external symbol _cvCreateImageerror LNK2001: unresolved external symbol _cvGetSizeerror LNK2001: unresolved external symbol _cvShowImageerror LNK2001: unresolved external symbol _cvLoadImageerror LNK2001: unresolved external symbol _cvNamedWindowerror 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@32error LNK2001: unresolved external symbol _gluLookAt@72error LNK2001: unresolved external symbol __imp__glLoadIdentity@0error LNK2001: unresolved external symbol __imp__glMatrixMode@4error LNK2001: unresolved external symbol __imp__glViewport@16error LNK2001: unresolved external symbol __imp__glHint@8error LNK2001: unresolved external symbol __imp__glDepthFunc@4error LNK2001: unresolved external symbol __imp__glEnable@4error LNK2001: unresolved external symbol __imp__glClearDepth@8error LNK2001: unresolved external symbol __imp__glClearColor@16error LNK2001: unresolved external symbol __imp__glShadeModel@4error LNK2001: unresolved external symbol __imp__glEnd@0error LNK2001: unresolved external symbol __imp__glVertex3f@12error LNK2001: unresolved external symbol __imp__glBegin@4error LNK2001: unresolved external symbol __imp__glTranslatef@12error LNK2001: unresolved external symbol __imp__glClear@4error LNK2001: unresolved external symbol __imp__wglDeleteContext@4error LNK2001: unresolved external symbol __imp__wglMakeCurrent@8error 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 _mainLIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexnafxcwd.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@4texture.obj : error LNK2001: unresolved external symbol __imp__glTexEnvf@12texture.obj : error LNK2001: unresolved external symbol __imp__glTexParameterf@12texture.obj : error LNK2001: unresolved external symbol __imp__glTexImage2D@36texture.obj : error LNK2001: unresolved external symbol __imp__glPixelStorei@8texture.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"就可以了。

转载于:https://www.cnblogs.com/suzhengsheng/p/5034786.html

你可能感兴趣的文章
前言 转录组
查看>>
局域网内访问机器时出现“未授予在次计算机上的请求登陆类型”
查看>>
Bogart BogartAutoCode.vb
查看>>
hdu - 2266 How Many Equations Can You Find (简单dfs)
查看>>
UIView属性
查看>>
将博客搬至CSDN
查看>>
远程服务器git搭建
查看>>
牛人们的博客地址
查看>>
Zabbix是什么?
查看>>
源码:COCO微博
查看>>
面向对象预习随笔
查看>>
大数据概念炒作周期模型
查看>>
排序模型
查看>>
Dede推荐文章与热点文章不显示?
查看>>
React 3
查看>>
Topshelf 使用
查看>>
Linux --Apache服务搭建
查看>>
20145325张梓靖 实验三 "敏捷开发与XP实践"
查看>>
JavaScript面试题
查看>>
[转帖]架构师眼中的高并发架构
查看>>