在Windows中添加Bonjour(dns_sd.h)库到Qt

我一直在试图正确地添加由Apple提供的开源dns_sd.h库。 我正在编写一个使用BonjourRegistrar类的程序,如下所示: 链接文本

我已经在Mac环境下编写了我的程序,现在我试图将它移植到Windows。 Bonjour SDK附带了几个类,我很困惑如何正确地添加类到我的Qt项目。 我已经尝试添加行:

win32:LIBS += c:\dnsssd.lib 

在.pro文件中没有成功。 此外,我试图添加dns_sd.h和dns_sd.c文件到我的项目中,并得到了一些错误,如:

'UINT8':不命名一个types'INT8':不命名一个types'UINT16'不命名一个types'INT16'不命名一个types

最后,我现在试图修改这个链接文本中由xcimo描述的lib文件

我不知道我是否使用正确的命令来正确修改这些文件。

只有在使用MSVC编译器编译Qt应用程序时,才能使用由Apple分发的.lib文件。

否则,就像你说的,你需要一个兼容GCC的库(.a)。 为此,您需要执行以下步骤:

  1. 在.lib: reimp dnssd.lib上运行reimp工具[0]。 将生成一个文件DLLStub.obj
  2. 在.dll: gendef dnssd.dll上运行gendef工具[1]。 将生成一个文件dnssd.def 。 如果您使用32位或从C:\Windows\SysWOW64作为64位版本,则可从以下位置获取.dll: C:\Windows\System32
  3. 汇编最后的.a: dlltool -k -d dnssd.def -l libdnssd.a
  4. 将.pro文件中的正确路径添加到新创建的库中: LIBS += -L"/path/to/the/library/file" -ldnssd

[0] – http://sourceforge.net/projects/mingw/files/MinGW/Extension/mingw-utils/mingw-utils-0.4-1/

[1] – http://sourceforge.net/projects/mingw/files/MinGW/Extension/gendef/gendef-1.0.1346/ – gendef是pexports的一个更好的选择,因为它可以从MSVC转换stdcall类型的库到海湾合作委员会,所以你可以得到一个正确的.def文件。

PS:我知道作者已经开始工作了,但是我觉得应该有一些更详细的指导说明如何完成它 – 信息分散在互联网上。

尝试添加

 DEFINES += _WIN32 

到你的项目文件。

我想明白了,你需要使用reimp和dll工具来将lib库修改为.a