VisualStudio2015--错误记录总结
来源:互联网 发布:mac怎么删除应用 编辑:程序博客网 时间:2024/05/29 03:59
之前在GitHub上下载了一个开源工程,是用C语言写的需要编译静态库什么的以及生成一个exe文件。我用的是VisualStudio2015遇到了很多麻烦,一点经验都没有,所以记录了一下最终编译成功的这个过程。
我编译的是jmpeg工程,网上还有一个哥们和我的遭遇一样http://www.cnblogs.com/ubosm/p/5444919.html
1.没有在配置里面添加包含头文件的目录
错误 C1083 无法打开包括文件: “libwebsockets.h”: No such file or directory
解决办法:打开工程配置–>>C/C++ –>>附加包含目录 D:\Output\VS2015\Project\jsmpeg-vnc-master\jsmpeg-vnc-master\source\libwebsocket
2.版本不兼容
错误 LNK2001 无法解析的外部符号 __imp__sprintf jsmpeg-vnc D:\Output\VS2015\Project\jsmpeg-vnc-master\jsmpeg-vnc-master\vs\websockets_static.lib(client-handshake.obj) 1
分析:错误上写着websockets_static.lib这个静态库里面有无法解析的外部符号
原因:这是老外对这个问题解释的原话:
In visual studio 2015, stdin, stderr, stdout are defined as follow :#define stdin (__acrt_iob_func(0))#define stdout (__acrt_iob_func(1))#define stderr (__acrt_iob_func(2))But previously, they were defined as:#define stdin (&__iob_func()[0])#define stdout (&__iob_func()[1])#define stderr (&__iob_func()[2])So now __iob_func is not defined anymore which leads to a link error when using a .lib file compiled with previous versions of visual studio.To solve the issue, you can try defining __iob_func() yourself which should return an array containing {*stdin,*stdout,*stderr}.Regarding the other link errors about stdio functions (in my case it was sprintf()), you can add legacy_stdio_definitions.lib to your linker options.
意思是说,VS2015的函数与前面版本定义的函数不一样才会报这个错。
解决方法:
打开工程配置–>>链接器 –>>附加依赖项添加下面这个库
legacy_stdio_definitions.lib
3.版本不兼容
错误 LNK2019 无法解析的外部符号 __imp____iob_func,该符号在函数 _lwsl_emit_stderr 中被引用 jsmpeg-vnc D:\Output\VS2015\Project\jsmpeg-vnc-master\jsmpeg-vnc-master\vs\websockets_static.lib(libwebsockets.obj) 1
在包含main函数的代码中添加
extern "C" { FILE __iob_func[3] = { *stdin,*stdout,*stderr }; }
或者添加
#if _MSC_VER>=1900 #include "stdio.h" _ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);#ifdef __cplusplus extern "C"#endif FILE* __cdecl __iob_func(unsigned i) { return __acrt_iob_func(i);}#endif
编译成功之后还要在目录下载添加相应的dll文件。并将client文件夹放到有exe文件的目录下面。运行即可。
0 0
- VisualStudio2015--错误记录总结
- C++错误记录总结
- VisualStudio2015密钥
- 【java web】 错误debug记录与总结
- [C#]VisualStudio2015内置LocalDB
- VisualStudio2015创建单元测试
- 错误记录
- 错误记录
- 错误记录
- 错误记录
- 错误记录
- 错误记录
- 错误记录
- 错误记录
- 错误记录
- 错误记录
- 错误记录
- 错误记录
- 前端页面引入文件后加如随机数
- ADO数据库编程
- Circular view path [...]: would dispatch back to the current handler
- 滑动隐藏tabBar
- 数据结构(最大子列和问题)
- VisualStudio2015--错误记录总结
- C#之流程控制语句
- SpringBoot实战_1 Spring项目搭建
- HTML-01 初识
- JavaScript神奇的魔法代码
- 文本属性1
- 基本日期与时间转换
- 【2017/4/14】oracle10g参数文件spfile
- ElasticSearch2.2.0安装