我从libspotify下载了兼容32位Windows的.dll和.lib文件。我正在处理的项目要求我使用其他在Windows上不起作用的库,但是使用Cygwin进行编译和工作。因此,我需要一种方法将.dll和/或.lib文件“转换”为兼容的Cygwin格式。这可能吗?
.dll文件不包含符号,因此Cygwin doc底部描述的建议方法不起作用。
我拥有的其他库生成了以下文件:
/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位。任何人都知道如何解决这个问题?
另一个更新:
它通过向CFLAGS和LDFLAGS添加-m32来工作。我现在得到了一个不同的错误,我认为这与原始问题无关。
答案 0 :(得分:0)
似乎问题是32位与64位。有人知道如何解决这个问题吗?
是;使用32位Cygwin作为依赖于第三方DLL的项目,该DLL仅以32位形式提供。不要使用64位Cygwin。
顺便说一句,Cygwin和Cygwin-64可以并排安装。 (并且可以在它们之间共享相同的主文件夹,因此您不必复制.bashrc
和诸如此类的东西。)
这不是Cygwin的问题。如果使用Microsoft Visual Studio构建64位可执行文件,它也不会加载32位libspotify
DLL。