簡體   English   中英

如何從本地Windows .dll和/或.lib文件創建與Cygwin兼容的庫文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM