2016-10-30 76 views
1

我成功編譯在Windows上的libxml2編譯libiconv的經過:如何生成基於Windows的libxml2.dll清單文件?

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年以來

working libxml2.dll is on the left, broken libxml2 is on the right

libxml2.dll左側工程完成。編譯libxml2.dll位於右側。事實證明,正在編譯的libxml2沒有zlib1依賴項,這可能是問題所在。

+0

沒有想到的原因,你需要* *爲libxml2的清單文件。它是用普通的C語言編寫的,不使用COM,不需要修改。 –

+0

@HansPassant嗯,我有一個libxml2下載的二進制文件(我在Windows上編譯的唯一原因是缺少64位二進制下載),如果我將這個文件分解回我的Win32版本,我的程序就可以工作,但如果我使用我編譯的libxml2,程序立即崩潰。我試圖動態鏈接已編譯的libxml2.dll會有什麼關係嗎? – NobleUplift

+0

你必須使用一個調試器,而不是隨機猜測的。 –

回答

1

運行cscript configure.js後運行nmake之前,編輯生成Makefile並添加/MANIFESTLDFLAGS

+0

當我回家時我會試試這個。 – NobleUplift

+0

我添加了'/ MANIFEST'標誌,但我似乎無法找到生成的清單文件。我的'win32'目錄中有'bin.msvc','int.a.dll.msvc','int.a.msvc','int.utils.msvc','VC10'和'wince'文件夾,但沒有'.mf' /'.manifest' /'.xml'文件。 – NobleUplift

+0

無視上述內容,我再次運行'cscript'之前忘了運行'nmake clean'。我有清單文件,我現在嘗試嵌入。謝謝! – NobleUplift

1

(一)電流(2.9.4)的配置腳本有一個vcmanifest=yes|no選項,沒有工作,據我可以告訴。

(B)你不需要一個。清單(如noted in the blog you link to)是需要的VC80(VS 2005)和VC90(VS2008),因爲在這些工作室版,MSVCRT經艙單/ WinSxS文件解決。

在vc10/Studio 2010及更高版本中,msvcrt再次安裝在Windows \ System32位置,並且不需要清單來加載crt。

從你出發行者截圖,你實際上缺少的是iconv.dll和zlib1.dll,除非你有iconv=nozlib=no編譯(這可能不是這些都不需要任何的清單,但需要你想)。

+0

我將zlib1問題轉移到[此處爲此問題](http://stackoverflow.com/questions/40568174/how-do-i-link-libxml2-with-zlib1-on-windows),但我使用' zlib = yes',它不顯示Dependency Walker中的zlib鏈接。 – NobleUplift