我一直在试图正确地添加由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)。 为此,您需要执行以下步骤:
reimp dnssd.lib
上运行reimp工具[0]。 将生成一个文件DLLStub.obj
。 gendef dnssd.dll
上运行gendef工具[1]。 将生成一个文件dnssd.def
。 如果您使用32位或从C:\Windows\SysWOW64
作为64位版本,则可从以下位置获取.dll: C:\Windows\System32
。 dlltool -k -d dnssd.def -l libdnssd.a
。 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