vs2017无法解析外部符号__imp__fprintf和__imp____iob_func
使用Quick-Cocos2dx-Community3.4创建了一个lua的cocos工程,用vs2017打开编译的时候libcocos2d项目报错了,出现了__imp__fprintf和__imp____iob_func 的错误,上网查了下,大概是因为vs版本不一致导致的。
以下是原帖内容:
-------------------------------------
使用vs2015编译ffmpeg的一个小项时,出现了__imp__fprintf和__imp____iob_func 的错误,google了一下,有的人 建议下载SDL源码重新编译一下,当然这个方案非常不科学。所以又继续搜,终于有所发现。
这是老外的原话:
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.
答题意思就是stdin, stderr, stdout 这几个函数vs2015和以前的定义得不一样,所以报错。
解决方法呢,就是使用{*stdin,*stdout,*stderr}数组自己定义__iob_func()
其实就是下边这样。
extern "C" { FILE __iob_func[3] = { *stdin,*stdout,*stderr }; }
然后__imp__fprintf的解决方法就是在链接器输入lib里加上legacy_stdio_definitions.lib这个LIB
-------------------------------------------------------------------------
我试了在libcocos2d项目的cocos2d.cpp里做如下修改:
#pragma comment(lib, "legacy_stdio_definitions.lib") //此为添加的代码#include "platform/CCPlatformMacros.h"
#include<stdio.h> //此为添加的代码extern "C" { FILE __iob_func[3] = { *stdin,*stdout,*stderr }; } //此为添加的代码NS_CC_BEGINCC_DLL const char* cocos2dVersion()
{return "Quick-Cocos2dx-Community 3.6";
}NS_CC_END
最后编译通过了。
原帖地址:
http://www.letg.top/?p=34
vs2017无法解析外部符号__imp__fprintf和__imp____iob_func相关推荐
- 无法解析的外部符号__imp__fprintf和 __imp____iob_func,SDL2
1>SDL2main.lib(SDL_windows_main.obj) : error LNK2019: 无法解析的外部符号 __imp__fprintf,该符号在函数 _ShowError ...
- 错误 LNK2019,无法解析的外部符号__imp____iob_func; 无法解析的外部符号 __imp__fprintf 的解决方法。
每次看到的LNK2019 的报错就有种崩溃的感觉,尤其是刚接触vc++的程序员. 我们经常会在网上搜索大神的技术文档,大神们提供的源代码都表示没有bug直接可以使用,但是我们下载以后发现各种报错,看到 ...
- VS在引用外库运行时显示无法解析外部符号
VS引用外库在运行时显示无法解析外部符号 问题截图 原因 链接器无法链接到 .lib,可以查看下图位置看库是否引入成功. 解决 检查库的配置是否正确.下面列出我在引用第三方库时的配置过程和注意事项. ...
- CUDA编程时遇到无法解析外部符号threadIdx或blockIdx问题的解决办法
在CUDA编程时遇到出现无法解析外部符号threadIdx或blockIdx问题的解决办法 在CUDA编程之前要确保工程项目的配置属性一致性如图一所示.然后点击项目->属性确保配置属性无误. V ...
- LNK2001:无法解析外部符号_sprintf
LNK2001:无法解析外部符号_sprintf与LNK1104:无法打开文件"kernel32.lib"_臻訾胃的博客-CSDN博客 从网上下载一个VS的demo,编译之后老是报 ...
- SDL 库 无法解析的外部符号 __imp__fprintf
VS2015 在链接器->命令行 里加入legacy_stdio_definitions.lib 另外一个常见错误关于stderr的用 extern "C" { FILE _ ...
- link2001错误无法解析外部符号metaObject
http://blog.sina.com.cn/s/blog_791f544a0100r01b.html 1>MainWindowBottomWidget.obj : error LNK2001 ...
- OPENGL—错误调试—无法解析外部符号
错误 1 error C1060: 编译器的堆空间不足 c:\program files (x86)\microsoft visual studio 11.0\vc\include\gl\glew. ...
- C++ TCp通信遇到的无法解析外部符号
当在VS2005编写WINCE程序时,如果包含WinSock2.h后使用socket的相关函数,则编译会出现如下错误: 1>TcpServer.obj : error LNK2019: 无法解析 ...
最新文章
- DataX离线数据同步工具/平台
- hadoop2.X集群安装与应用
- log4j+flume+HDFS实现日志存储
- shell 的AWK
- insight face数据打包(一):LFW
- 机器学习(2)——监督学习
- 计算机禁止开机自启动,通过禁止开机启动项快速开机,提升电脑流畅度,拒绝自启...
- 机器学习核心概念完全解析(建议收藏)
- linux驱动与设备实例(字符设备(互斥读写),misc设备和platform_device)
- 斗鱼弹幕服务器第三方接入协议v1.6.2,.NET斗鱼直播弹幕客户端(上)
- 最简示例 简介洗牌函数 之 __shfl_sync() cuda 之 shuffle
- python中跳过本次循环的语句是_Python跳过for循环
- iOS微信第三方登录实现
- android图片上水印字体颜色,Android给图片添加文字和水印
- AJAX框架简笔画风景简单,好看简单的简笔画风景
- 10个提升客户服务体验的工具!
- Labview的下载地址
- Gephi UCI 世行数据 聚合数据 APP分类 Context
- 中华兵法大典--电子书下载
- 多个数字组成一个最大数
热门文章
- 苹果homekit,homeassistant,谷歌等智能生态系统,哪一款更加适合你?
- 饥荒插件制作应注意的几个问题
- Android仿QQ登陆
- ubuntu文本输入源,找不到中文拼音输入源
- serviceBattery mac换电池 mac怎么换电池mac拆机
- 代码故障检测列表(持续更新)
- ChatGPT 爆火!谷歌、微软、百度纷纷下场?
- tracepro应用实例详解_腾讯云服务器计费模式包年包月、按量计费和竞价实例选择建议...
- 控制台安装mysql步骤_mysql5.6安装步骤-win7系统
- hp ux安装mysql5.1.56_详细讲解Linux环境下MySQL5.1安装步骤