解析”无法解析的外部符号“


当用Visual Studio 链接程序时,往往会产生”无法解析的外部符号“这一种错误,但是我们只能看到错误产生的位置是因为使用了某一个外部函数,我们暂且称之为问题函数,所有使用这个问题函数的函数都会产生类似的错误
难到是文件包含问题吗?不是,即使include 了包含有这个问题函数的头文件,错误依旧。开始抓头皮了吧!
先别急,仔细想一想问题所在。
记得在手工敲命令行编译汇编程序的时候,
命令常常是一下这种情况:(一个很常见的编译命令,假设这里用到了kernel32.lib
 ml /c /coff sample.asm
 link /subsystem:windows /entry:start /out:sample.exe sample.obj kernel32.lib
注意到后面的.lib文件,这就是问题的所在,我们如果用到了外部函数,即使源程序中已经写明了包含kernel32.lib,也要在链接的时候写入链接程序。
Visual Studio的链接程序默认写入了很多常用到的库文件,但是也难免有一些我们用的的没有加入,所以解决办法就是在编译选项中加入问题函数所在的lib文件即可。
在哪里加入呢?
 要么回到原始时代,用命令行编译,
 要么点击工程中的项目属性,里面有一大堆的选项,
挨个试试看要比我告诉你在哪里加入什么长的经验多
错误产生的原因是
 再补上一小段:
 原来产生这个错误的原因不只是因为这一个
比如写程序的风格是在一个独立的头文件中写明类的定义,函数声明,而且另一个源文件(cpp)中写类成员函数的实现,和已声明函数的实现,如果因为一点小小的拼写错误导致两者有点不一致,这种情况下,编译器就不能识别了-当然编译器也不好意思报错,我们已经把函数声明了呀!
 问题产生的原理是一样的,还是编译器找不到函数的实现部分--》废话,不然怎么会产生同样的错误呢!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值