Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.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
PHP的windows发行版中有哪些36字节长的*.dll文件?符号链接?怎么用?_Windows_Linker_Symlink_Dll - Fatal编程技术网

PHP的windows发行版中有哪些36字节长的*.dll文件?符号链接?怎么用?

PHP的windows发行版中有哪些36字节长的*.dll文件?符号链接?怎么用?,windows,linker,symlink,dll,Windows,Linker,Symlink,Dll,在linux/unix世界中,symlink*。因此文件被广泛使用。也就是说,通常会看到libfoo.so和libfoo.so.X文件只是libfoo.so.X.Y.Z(常规文件)的符号链接。我从来没有在Windows上这样做过(尽管Windows符号链接) 尽管如此,当我最近下载PHP二进制Windows发行版时,我看到了非常相似的图片: icudt.dll(大小仅为36字节) icudt46.dll(正常大小) icudt49.dll(正常大小) icuuc.dll(大小仅为36字节) i

在linux/unix世界中,symlink*。因此文件被广泛使用。也就是说,通常会看到libfoo.so和libfoo.so.X文件只是libfoo.so.X.Y.Z(常规文件)的符号链接。我从来没有在Windows上这样做过(尽管Windows符号链接)

尽管如此,当我最近下载PHP二进制Windows发行版时,我看到了非常相似的图片:

  • icudt.dll(大小仅为36字节)
  • icudt46.dll(正常大小)
  • icudt49.dll(正常大小)
  • icuuc.dll(大小仅为36字节)
  • icuuc46.dll(正常大小)
  • icuuc49.dll(正常大小)
  • 等等
未版本化的*.dll文件显然是常规文件(不是NTFS符号链接或连接点)。但是,它们的大小非常小(从36到40字节),内容非常具体。例如,icudt.dll的内容是:

!<symlink>яюi_c_u_d_t_4_9_._d_l_l___
!我想我会的___
(“ю”在这里是指“\x0”,“ю”在这里是指“\xFF\xFE”)

这些类似符号链接的DLL应该如何工作

  • windows可以像处理普通DLL一样处理它们吗
  • 或者WinAPI中针对此类DLL的一些特殊函数
  • 还是只有PHP才能识别这样的DLL?
    • 也许PHP源代码的编写方式是显式读取和分析每个DLL以解析此类伪符号链接
注意:据说PHP是由VC9构建的,因此它可能不是与cygwin/mingw相关的东西(有人可能会首先想到)。
注2:在C:\Windows目录中未找到此类小型DLL。

Windows不会将这些文件识别为DLL或任何类型的DLL链接。正如Hans Passant正确地指出的,它是Cygwin特定的文件,只有基于Cygwin的构建才会将它们识别为Cygwin框架的符号链接,而不是Windows操作系统的符号链接

如果您尝试在任何标准Win32 API中使用它们,您将收到一系列加载错误,声称可执行文件的格式无效。PHP是由VC9编译的这一事实并不意味着VC9创建了有问题的文件,因为它们很可能是通过某个Cygwin工具准备的

另外,Windows的最小可执行文件大小为97字节,如上所述