如何为基于 Windows 构建的 libxml2.dll 生成清单文件?
How do I generate a manifest file for libxml2.dll built on Windows?
我在编译 libiconv 后在 Windows 上成功编译了 libxml2:
http://www.codeproject.com/Articles/302012/How-to-Build-libiconv-with-Microsoft-Visual-Studio
并遵循本教程:
http://marlowa.blogspot.com/2013/07/how-to-build-libxml2-on-windows-using.html
现在我正在尝试为 libxml2.dll 生成清单文件。我该怎么做呢?我用 Google 搜索了一下,它说要在 Visual Studio 中创建清单文件,但我是从命令行编译的。这是我用来构建它的脚本:
@ECHO OFF
CALL "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
CD libxml2-2.9.4\win32
cscript configure.js compiler=msvc prefix=D:\Repos\libxml2\release include=D:\Repos\libiconv\release\include lib=D:\Repos\libiconv\release debug=yes
REM "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
nmake
nmake install
cd ../..
我在我的插件的这一行得到一个 "Module not found" 异常,我确认这是 libxml2.dll 的问题,因为使用 libxml2.dll 的下载二进制文件,它工作正常很好。
https://github.com/NobleUplift/TeamSpeak3WebsitePreview/blob/master/ts3websitepreview/plugin.c#L148
感谢所有帮助。我几乎完成了这个自 2011 年以来一直在蹦蹦跳跳的项目。
左边的libxml2.dll有效。编译好的libxml2.dll在右边。事实证明正在编译的 libxml2 没有 zlib1 依赖项,这可能是问题所在。
在运行cscript configure.js
之后运行nmake
之前,编辑生成的Makefile
,将/MANIFEST
添加到LDFLAGS
.
(a) 据我所知,当前 (2.9.4) 配置脚本有一个 vcmanifest=yes|no
选项确实有效。
(b) 你不需要。 vc80 需要 清单(如 noted in the blog you link to)(VS 2005) 和 vc90 (VS2008) 因为在这些工作室版本中,msvcrt 是通过清单/WinSxS 解析的。
vc10/Studio 2010及以上版本,msvcrt再次安装在Windows\System32位置,加载crt不需要manifest
从你的 dep-walker 屏幕截图来看,你实际上缺少的是 iconv.dll 和 zlib1.dll 这些也不需要清单,但除非你使用 [=11= 编译否则是必需的] zlib=no
(这可能不是你想要的)。
我在编译 libiconv 后在 Windows 上成功编译了 libxml2:
http://www.codeproject.com/Articles/302012/How-to-Build-libiconv-with-Microsoft-Visual-Studio
并遵循本教程:
http://marlowa.blogspot.com/2013/07/how-to-build-libxml2-on-windows-using.html
现在我正在尝试为 libxml2.dll 生成清单文件。我该怎么做呢?我用 Google 搜索了一下,它说要在 Visual Studio 中创建清单文件,但我是从命令行编译的。这是我用来构建它的脚本:
@ECHO OFF
CALL "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
CD libxml2-2.9.4\win32
cscript configure.js compiler=msvc prefix=D:\Repos\libxml2\release include=D:\Repos\libiconv\release\include lib=D:\Repos\libiconv\release debug=yes
REM "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
nmake
nmake install
cd ../..
我在我的插件的这一行得到一个 "Module not found" 异常,我确认这是 libxml2.dll 的问题,因为使用 libxml2.dll 的下载二进制文件,它工作正常很好。
https://github.com/NobleUplift/TeamSpeak3WebsitePreview/blob/master/ts3websitepreview/plugin.c#L148
感谢所有帮助。我几乎完成了这个自 2011 年以来一直在蹦蹦跳跳的项目。
libxml2.dll有效。编译好的libxml2.dll在右边。事实证明正在编译的 libxml2 没有 zlib1 依赖项,这可能是问题所在。
在运行cscript configure.js
之后运行nmake
之前,编辑生成的Makefile
,将/MANIFEST
添加到LDFLAGS
.
(a) 据我所知,当前 (2.9.4) 配置脚本有一个 vcmanifest=yes|no
选项确实有效。
(b) 你不需要。 vc80 需要 清单(如 noted in the blog you link to)(VS 2005) 和 vc90 (VS2008) 因为在这些工作室版本中,msvcrt 是通过清单/WinSxS 解析的。
vc10/Studio 2010及以上版本,msvcrt再次安装在Windows\System32位置,加载crt不需要manifest
从你的 dep-walker 屏幕截图来看,你实际上缺少的是 iconv.dll 和 zlib1.dll 这些也不需要清单,但除非你使用 [=11= 编译否则是必需的] zlib=no
(这可能不是你想要的)。