1

我一直在尝试正确添加 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 文件

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

4

3 回答 3

6

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

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

  1. 在 .lib: 上运行reimp工具 [0] reimp dnssd.libDLLStub.obj将生成一个文件。
  2. 在 .dll: 上运行gendef工具 [1] gendef dnssd.dlldnssd.def将生成一个文件。.dll 可以从以下位置获取:C:\Windows\System32如果您使用的是 32 位或从C:\Windows\SysWOW6464 位版本。
  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,因为它可以将 stdcall 类型的库从 MSVC 转换为GCC 的,所以你可以得到一个正确的 .def 文件。

PS:我知道作者让它工作了,但我觉得应该有一些关于如何完成它的更详细的说明——这些信息分散在互联网上。

于 2012-07-04T12:05:06.760 回答
0

尝试添加

DEFINES += _WIN32

到您的项目文件。

于 2010-12-03T10:45:08.637 回答
0

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

于 2010-12-17T01:10:04.787 回答