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。

这个是在哪个地方设置的啊
...全文
195 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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有两个定义的地方,应该从这里找下去。



回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告