我一直在尝试正确添加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
我不知道我是否使用正确的命令来正确修改这些文件。
答案 0 :(得分:5)
只有在使用MSVC编译器编译Qt应用程序时,才能使用Apple分发的.lib。
否则,就像你说的那样,你需要一个与GCC兼容的库(.a)。为此,您需要执行以下步骤:
reimp dnssd.lib
上运行 reimp 工具[0]。将生成文件DLLStub.obj
。gendef dnssd.dll
上运行 gendef 工具[1]。将生成文件dnssd.def
。如果您使用32位,则可以从C:\Windows\System32
获取.dll;对于64位版本,可以从C:\Windows\SysWOW64
获取。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
的更好替代品,因为它可以将stdcall类型库从MSVC转换为GCC,因此您可以获得正确的.def文件。
答案 1 :(得分:0)
尝试添加
DEFINES += _WIN32
到您的项目文件。
答案 2 :(得分:0)
我想通了,你需要使用reimp和dll工具将lib库修改为.a