Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows中打开文件的最基本方法_Windows - Fatal编程技术网

在Windows中打开文件的最基本方法

在Windows中打开文件的最基本方法,windows,Windows,我正在编写一个静态链接(到其他库或应用程序)的库。我想使我的图书馆尽可能小。我的图书馆需要阅读一个文件;文件名将提前知道,并且只包含ASCII字符。我的库将绝对没有用户界面或GUI代码;它只是需要调用的函数 我应该调用什么函数来打开我的文件,而链接器会带来尽可能少的额外代码 大概CreateFile()是一个基本的内置Windows功能,它位于共享库中。那么,我是否应该使用CreateFileA()(以避免转换为宽字符) 对于CreateFileA()我需要包括Windows.h;这会增加我图书

我正在编写一个静态链接(到其他库或应用程序)的库。我想使我的图书馆尽可能小。我的图书馆需要阅读一个文件;文件名将提前知道,并且只包含ASCII字符。我的库将绝对没有用户界面或GUI代码;它只是需要调用的函数

我应该调用什么函数来打开我的文件,而链接器会带来尽可能少的额外代码

大概
CreateFile()
是一个基本的内置Windows功能,它位于共享库中。那么,我是否应该使用
CreateFileA()
(以避免转换为宽字符)

对于
CreateFileA()
我需要包括
Windows.h
;这会增加我图书馆的规模吗?如果是这样,定义
WINDOWS\u LEAN\u和\u是否意味着
有帮助


我应该只使用
\u open()
?或者,我想它现在应该是
\u sopen\u s()

\u open并且它的派生版本使用标准的c库,这通常会增加库的大小。CreateFile是一个不错的选择。A或W取决于您是否需要使用Unicode进行链接,这将取决于您链接的对象

你知道所有以
A
结尾的函数都只是
W
函数的包装吗?为什么不只是ANSI C fiel函数呢?:
fopen
fread
,等等@JesseGood,我不明白你评论背后的意思。好的,以
A
结尾的函数是包装器;这影响到我的问题。。。怎么做?@Linuxios,我要最小尺寸的。如果
fopen()
和朋友们能让我的图书馆像
CreateFileA()
一样小,那么我会欣然使用它们;与本机Windows函数相比,我几乎总是更喜欢*NIX函数。@steveha:这没有直接关系,但由于
A
函数会产生开销(它们从ASCII转换为Unicode,然后调用
W
函数),因此最好从+1开始使用
W
函数。C库在Windows上不是“标准”库,因此必须静态链接它-=更大的二进制文件。如果只关心大小,A或W不会有什么区别,所有的函数都将来自外部DLL。@vanza--Visual C做了很多神奇而自动的事情。。。如何判断Visual C是否在标准C库中运行?例如,如果我
#include
来获取像
size\u t
这样的类型,这会使Visual C在库中发出咕噜声,还是我实际上需要引用库函数,以便链接器在库中链接?Visual C甚至没有显示链接器的实际输出,只是一个经过清理的状态列表,如下所示:
Foo.vcxproj->C:\Users\steveha\Project\Debug\Foo.lib
@steveha:您需要引用库中的符号才能链接库。类型定义仅在头文件中,而不是在库中。因为您正在创建一个静态库,所以我认为链接器不会要求您立即链接msvcrt—就在应用程序静态链接您的库并创建自己的DLL或EXE时。@vanza--才有意义。我只是怀疑VisualC,因为它自动完成了很多工作,隐藏了很多东西!