VS2015 stdio.h里面函数调用位置的问题

suncs2001 2018-07-09 03:02:25
我在win10的系统上,vs2015 新建了一个c++工程,里面执行一个函数 fopen_s, 我发现在同样一台电脑上的另外一个工程里(网上下载的),执行fopen时,使用的代码是C:\Program Files (x86)\Windows Kits\10\Source\10.0.10150.0\ucrt\stdio\fopen.cpp 我自己新建的工程里,执行fopen时,调用的是C:\Windows\SysWOW64\ucrtbased.dll里的fopen_s。

这个是在哪个地方设置的啊
...全文
432 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2018-07-11
  • 打赏
  • 举报
回复
fopen ???
fopen_s ???
赵4老师 2018-07-10
  • 打赏
  • 举报
回复
学会使用depends.exe查看exe依赖的dll及其路径、版本、……
suncs2001 2018-07-09
  • 打赏
  • 举报
回复
刚才测试了一下,跟找到两个头文件没关系。
我之前建立的项目是win32 控制台程序。 这次新建了一个空程序,添加了一个.cpp文件,在这个里面执行 fopen_s(&fp, "D:\\1.txt", "r"); 在这个里面F12查看FILE的定义只跳转到一个文件,C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt\corecrt_wstdio.h。 但是执行到fopen_s时,仍然进入的是C:\Windows\SysWOW64\ucrtbased.pdb

赵4老师 2018-07-09
  • 打赏
  • 举报
回复
如果是我,重装VS
suncs2001 2018-07-09
  • 打赏
  • 举报
回复
我写了如下的代码,

#include "stdafx.h"
#include <stdio.h>
int main()
{
FILE*fp;
fopen_s(&fp, "D:\\1.txt", "r");

return 0;
}我发现FILE提示 “错误:未定义的标识符”,但是编译OK。
在FILE上按F12,提示有两个地方
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt\mbstring.h
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt\corecrt_wstdio.h

但是在我下载的那个工程上,点击FILE,显示只有一个
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt\corecrt_wstdio.h

是不是编译失败,但是找到默认的库去了,所以跑到了C:\Windows\SysWOW64\ucrtbased.dll。 是不是问题出在FILE有两个定义的地方,应该从这里找下去。



24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧