Visual Studio 开发(三):Visual Studio 使用时常见问题解决方案
一、Error LNK2019: 无法解析的外部符号
此问题应该是Visual Studio的初学者最常碰到的问题,也是相对来说很让人头疼的问题。
注:Error LNK2019 问题在VC 6.0 中是 error LNK2001: unresolved external symbol 问题。
此问题出现在编译的时候,例如:Dlgcode.obj : error LNK2019: 无法解析的外部符号 _readRegmark,该符号在函数 _AboutDlgProc@16 中被引用。
这种错误的本质是链接器无法在已编译的obj、lib或dll文件中找到函数定义。下面是可以尝试的解决方案:
1. 检查项目中是否是只有头文件(有了函数声明)却没有lib。一般出现于你使用了第三方提供的库(当然如果库是自己写的,也会这样,重点是没有导入lib),下载了头文件却忘了载库文件,或库文件忘记放到相应的目录下了。
2. 如果进行上面的检查后发现并没有问题,头文件没问题,cpp文件也没问题,相应的库都正常引入了,但是依旧出现LNK2019错误。此时我们就应该从代码层面去排查问题了。很有可能是C语言和C++语言混编导致的问题。因为C++支持函数重载,所以C++编译器生成的库文件中的函数名会面目全非。
例如C编译器会生成 _readRegmark 这个函数名,而C++编译器则生成了"void __cdecl readRegmark(char *)" (?readRegmark@@YAXPAD@Z)这么个函数名。
当你的函数是用C语言写的,VS编译器会按C语言规则编译,但链接器却不知道还傻傻的用C++规则的函数名去找结果就找不到了。
解决办法:在C语言的头文件中加入extern "C",代码方式如下:
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
#include "libswscale/swscale.h"
#include "libavutil/imgutils.h"
#include <libswresample/swresample.h>
#include "SDL.h"
}
Visual Studio 开发(三):Visual Studio 使用时常见问题解决方案的更多相关文章
- JavaScript开发之路02(Sencha Touch使用时常见问题及解决办法)
1.Sencha中使用组件后通过layout: 'vbox'指定页面布局为垂直盒布局并且组件的高度采用height: '百分比'指定时,组件的背景色通过style: 'background:#F6F6 ...
- Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程
原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...
- Visual Studio 开发(二):VS 2017配置FFmpeg开发环境
在上篇文章Visual Studio 开发(一):安装配置Visual Studio Code 中,我们讲了一下如何配置VS CODE,来编写和调试C的代码.如果你已经使用VS Code回顾和复习好C ...
- visual studio开发工具的C#主流控件属性一览表
visual studio开发工具的C#主流控件属性一览表 详细的介绍了各控制属性的详细中文介绍 C#控件及常用设计整理 1.窗体 1.常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程 ...
- 使用Visual Studio开发跨平台的iOS应用程序
[原文发表地址]Developing cross-platform iOS application using Visual Studio [原文发表时间]2015/6/4 C ++是一种流行的高级编 ...
- 【VS开发】visual studio 2015的NuGet Manager解决方案管理功能
NuGet的官方说明是:NuGet是一款Visual Studio的扩展,它可以简单的安装.升级开源库和工具. 官网地址:http://www.nuget.org/ 官网最醒目的位置就是下载链接,安装 ...
- 使用 Visual Studio 开发、测试和部署 Azure Functions(二)测试,部署
1,引言 上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vist ...
- SharePoint 2013 工作流之Visual Studio开发示例篇
SharePoint 2013引用了WF4.0 Foundation,支持使用Designer和Visio进行设计,但是功能受限,而Visual Studio可以开发功能更加丰富的工作流,下面我们简单 ...
- Visual Studio开发Cordova应用示例
作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5455728.html 本文的GIF动画均使用ScreenToGif进行录制. Cordova是什么? ...
随机推荐
- redis位图巧用,节约内存
最近要做一个圣诞抽奖活动,需要记录每天用户签到的记录,以前一般都是用普通的字符串数据类型,每个用户的签到用一个 key // 用户10在活动第一天的签到key为record:1:10 $key = & ...
- ios开发之block的使用,及注意事项
转自:http://my.oschina.net/u/1432769/blog/390401 Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事.需要注意的是由于 ...
- 2018 ACM/ICPC 南京 I题 Magic Potion
题解:最大流板题:增加两个源点,一个汇点.第一个源点到第二个源点连边,权为K,然后第一个源点再连其他点(英雄点)边权各为1,然后英雄和怪物之间按照所给连边(边权为1). 每个怪物连终点,边权为1: 参 ...
- 基于FPGA+USB2.0的图像采集系统测试小结-mt9m001
基于FPGA+USB2.0的图像采集系统测试小结-mt9m001 该系统采用层层惊涛出品的FPGA_VIP_USB_V102板卡测试 板卡分为:核心板.底板.摄像头板 核心板采用:ep4ce10e22 ...
- Python多版本管理器pyenv
查看Linux版本 [root@web ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@web ~]# uname -a L ...
- Windows安装MSYS2_切换zsh_整合cmder
MSYS2是什么 MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,主要用于 shell 命令行开发环境.同时它也是一个在Cygwin (POSIX 兼容性层) 和 Mi ...
- LNMP-Nginx负载均衡
Nginx负载均衡介绍 Nginx提供负载均衡的模块upstream,这个模块是默认的,不需要重新编译模块.通常情况下,负载均衡一般用于后端两台机器同时提供服务供用户访问,但是用户经常访问的其中一台服 ...
- 3年java开发面试BAT,你必须彻底搞定Maven!
前言 现在的Java项目中,Maven随处可见. Maven的仓库管理.依赖管理.继承和聚合等特性为项目的构建提供了一整套完善的解决方案,如果你搞不懂Maven,那么一个多模块的项目足以让你头疼,依赖 ...
- java面试题干货126-170
这部分主要是开源Java EE框架方面的内容,包括Hibernate.MyBatis.Spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...
- ELK 理论小知识
ELK 是现阶段众多企业单位都在使用的一种日志分析系统,它能够方便的为我们收集你想要的日志并且展示出来 ELK是Elasticsearch.Logstash.Kibana的简称,这三者都是开源软件,通 ...