【发布时间】:2016-10-30 02:42:52
【问题描述】:
编译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 生成清单文件。我该怎么做呢?我用谷歌搜索了一下,它说要在 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 ../..
我的插件的这一行出现“未找到模块”异常,我确认这是 libxml2.dll 的问题,因为使用下载的 libxml2.dll 二进制文件,它工作正常。
https://github.com/NobleUplift/TeamSpeak3WebsitePreview/blob/master/ts3websitepreview/plugin.c#L148
任何和所有的帮助表示赞赏。我几乎完成了这个自 2011 年以来一直在开展的项目。
左侧的 libxml2.dll 有效。右侧是编译好的libxml2.dll。事实证明,正在编译的 libxml2 没有 zlib1 依赖项,这可能是问题所在。
【问题讨论】:
-
没有什么理由需要 libxml2 的清单文件。它是用纯 C 编写的,不使用 COM,不需要修改。
-
@HansPassant 好吧,我有一个下载的 libxml2 二进制文件(我在 Windows 上编译的唯一原因是缺少 64 位二进制文件下载),如果我将它分回我的 Win32 版本,我的程序可以工作,但是如果我使用我编译的 libxml2,程序会立即崩溃。我尝试动态链接已编译的 libxml2.dll 是否重要?
-
你必须使用调试器而不是随机猜测。
-
@HansPassant 不过这不是随机猜测;我只是按照 Andrew Marlow 博客中的说明进行操作。奇怪的是我创建了一个测试项目并将代码作为控制台应用程序运行,它运行得很好,但是当我编译它以在我的插件中运行时,我得到一个“找不到模块”异常here。跨度>
-
@HansPassant,我添加了一个依赖walker的截图。似乎我正在编译的 libxml2 没有 zlib1。我会尝试将其纳入编译中,看看是否可以解决它。
标签: c visual-studio-2010 manifest libxml2 nmake