我一直在尝试正确添加Apple提供的开源dns_sd.h库。我正在编写一个使用 BonjourRegistrar 类的程序,如下所示:链接文本
我已经在Mac环境上编写了我的程序,现在我正在尝试将其移植到Windows。 Bonjour SDK 附带了几个类,我对如何正确地将这些类添加到我的 Qt 项目中感到非常困惑。我尝试添加以下行:
win32:LIBS += c:\dnsssd.lib
在 .pro 文件中没有成功。另外,我尝试将 dns_sd.h 和 dns_sd.c 文件添加到我的项目中,但出现了一些错误,例如:
'UINT8':未命名类型
“INT8”:未命名类型
“UINT16”未命名类型
“INT16”未命名类型
最后,我现在尝试按照 xcimo 在此链接中的描述修改 lib 文件链接文本
我不知道我是否使用正确的命令来正确修改这些文件。
仅当您使用 MSVC 编译器编译 Qt 应用程序时,才能使用 Apple 分发的 .lib。
否则,就像您所说的,您需要一个与 GCC 兼容的库 (.a)。为此,您需要执行以下步骤:
- Run the reimp.lib 上的工具 [0]:
reimp dnssd.lib
。一份文件DLLStub.obj
将被生成。
- Run the gendef.dll 上的工具 [1]:
gendef dnssd.dll
。一份文件dnssd.def
将被生成。 .dll 可以从以下位置获取:C:\Windows\System32
如果您使用的是 32 位或C:\Windows\SysWOW64
对于 64 位版本。
- 组装最终的.a:
dlltool -k -d dnssd.def -l libdnssd.a
.
- 将 .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:我知道作者成功了,但我觉得应该有一些关于如何完成它的更详细的说明——这些信息分散在互联网上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)