大家。
我是c ++的新手,我对c#有一些经验。我想创建一个纯c ++开发环境,并使用标准的c ++库。我的操作系统是Windows。
我选择code :: block + MinGW在Windows上构建纯粹的开发环境。我直接选择整合MinGW的Code :: Block安装包。然后我开始开发我的第一个学习项目。在这个项目中,我使用函数“stat”从标准库中获取文件信息。我通过了编译。但在运行此程序时,我检查了“调用堆栈”。并找到从文件“C:\ WINDOWS \ system32 \ msvcrt.dll”调用的函数“stat”。我从互联网上检查了这个DLL,发现这个文件是一个微软的Windows库文件。显然,这个dll文件没有函数“stat”,但是函数“_stat”。
那么我该如何解决这个问题呢?我想使用标准的c ++库,而不是微软的Windows库。因为以后,我想将这个项目移到linux环境中。总的来说,我如何构建开发环境以满足我的需求。
答案 0 :(得分:0)
如果您正在为Windows构建,则必须使用Windows系统库。您只需根据目标系统链接其中一个或另一个。这些库仅提供底层实现,这与一个OS不同。
在您的具体示例中,stat是由标准系统头定义的函数,但其底层实现因系统而异。整个函数可能是从msvcrt中提取的,但我的猜测是msvcrt碰巧实现了一个处理所有系统特定内容的伴随函数。