zoukankan      html  css  js  c++  java
  • VC: error LNK2019:unresolved external symbol *** referenced in function ***的解决方案

    当头文件中声明了一个函数,但是在相应的源文件中却没有对该函数进行定义,则会出现为“解决的外部符号”(unresolved external symbol )错误。另外,当一个函数调用了外部的一个库文件中的函数,但是在当前project的properties中并没有将所依赖的(dependent)库文件包含进来时,也会出现这种错误。 

           综上,当一个solution在linking时找不到所涉及到的函数的定义时就会出现“unresolved external symbol ”错误。 

          例如,下面是调用rapi的库文件rapi.lib中的函数时,由于没有将rapi.lib包含进来而导致的链接错误。 

    1>Linking... 
    WMFileSync.obj : error LNK2019: unresolved external symbol _CeFindClose@4 referenced in function "public: virtual long __stdcall CWMFileSync::IsFileExists(wchar_t *)" (?IsFileExists@CWMFileSync@@UAGJPA_W@Z) 

     【解决方案】 

           1. Project -> ** Properties... -> Configuration Properties -> Linker -> Input -> Additional Dependencies -> rapi.lib 

    另外,在此之前,还需添加rapi库的相应目录:Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for -> 在Include files中添加C:Program FilesMatrox Imaging apiInclude 以及 Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for -> 在Library files中添加C:Program FilesMatrox Imaging apiLIB。添加目录的目的是为了使VC在调用相应库文件时不必总是使用绝对地址,VC可以通过文件名在所包含的目录中进行搜索。这样,前面的rapi.lib就不必使用绝对地址了。 

           【缺点】可移植性差,如果将原工程中的源文件和头文件中的内容copy下来重新建立该工程时(例如:在电子书或网络上找到的程序),仍需自己在工程中添加目录及所需的库文件。 

           2. 在程序前加入#pragma commet(lib, "rapi.lib")也可以达到相同的效果。

    【此博文为网上转载】

  • 相关阅读:
    JVM垃圾收集器-Parallel Scavenge收集器
    JVM垃圾收集器-ParNew收集器
    JVM垃圾收集器-Serial收集器
    UCloud数据盘扩容步骤
    java中强引用、软引用、弱引用、幻象引用有什么区别?分别使用在什么场景?
    java中exception和error有什么区别,运行时异常和一般异常有什么区别
    maven中的坐标和仓库
    Maven常用的构建命令
    Maven学习
    【设计原则和编程技巧】单一职责原则 (Single Responsibility Principle, SRP)
  • 原文地址:https://www.cnblogs.com/zhouwenJS/p/4024488.html
Copyright © 2011-2022 走看看