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

时间:2010-12-02 23:42:25

标签: windows qt bonjour

我一直在尝试正确添加Apple提供的开源dns_sd.h库。我正在编写一个使用BonjourRegistrar类的程序,如下所示: link text

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

win32:LIBS += c:\dnsssd.lib
<。>在.pro文件中没有成功。此外,我试图将dns_sd.h和dns_sd.c文件添加到我的项目中,并得到一些错误,如:

'UINT8':没有命名类型 'INT8':不命名类型 'UINT16'没有命名类型 'INT16'未命名类型

最后,我现在正尝试在此链接中修改xcimo所描述的lib文件 link text

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

3 个答案:

答案 0 :(得分:5)

只有在使用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\System32获取.dll;对于64位版本,可以从C:\Windows\SysWOW64获取。
  3. 组装最终的.a:dlltool -k -d dnssd.def -l libdnssd.a
  4. 将.pro文件中的正确路径添加到新创建的库中:LIBS += -L"/path/to/the/library/file" -ldnssd
  5. [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的更好替代品,因为它可以将stdcall类型库从MSVC转换为GCC,因此您可以获得正确的.def文件。

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

答案 1 :(得分:0)

尝试添加

DEFINES += _WIN32

到您的项目文件。

答案 2 :(得分:0)

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