[英]How to create Cygwin compatible library files from native Windows .dll and/or .lib files
我已經從libspotify下載了與32位Windows兼容的.dll和.lib文件。 我正在處理的項目要求我使用其他在Windows上不起作用,但可以使用Cygwin進行編譯和工作的庫。 因此,我需要一種將.dll和/或.lib文件“轉換”為兼容的Cygwin格式的方法。 那可能嗎?
.dll文件不包含符號,因此Cygwin文檔底部描述的建議方法無效。
我擁有的其他庫生成了以下文件:
/usr/local/lib/{libname.la, libname.dll.a and sometimes libname.a}
/usr/local/bin/cyglibname.dll
其中libname是正確編譯和安裝的庫的名稱。 如何從本地32位Windows .dll和.lib文件獲取這些文件?
更新:
我嘗試包含.dll文件的完整路徑,而不是像我以前用來鏈接庫那樣使用-l和-L,我得到以下消息:
/usr/bin/ld: i386 architecture of input file `/usr/local/test/libspotify.dll' is
incompatible with i386:x86-64 output
看來問題出在32位與64位。 有人知道該如何解決嗎?
另一個更新:
它通過將-m32添加到CFLAGS和LDFLAGS來工作。 我現在遇到了另一個錯誤,我認為它與原始問題無關。
看來問題出在32位與64位。 有人知道該如何解決嗎?
是; 對於依賴第三方DLL(僅以32位格式提供)的項目,請使用32位Cygwin。 不要使用64位Cygwin。
順便說一下,Cygwin和Cygwin-64可以並排安裝。 (並且有可能在它們之間共享相同的主文件夾,因此您不必復制.bashrc
和其他東西。)
這不是Cygwin問題。 如果使用Microsoft Visual Studio構建64位可執行文件,它也將不會加載32位libspotify
DLL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.