2010-12-02 67 views
1

我一直在試圖正確添加Apple提供的開源dns_sd.h庫。我正在編寫一個使用BonjourRegistrar類的程序,如下所示: link text在Windows中添加Bonjour(dns_sd.h)庫到Qt

我已經在Mac環境中編寫了我的程序,現在我試圖將它移植到Windows。 Bonjour SDK帶有幾個類,我很困惑如何正確添加類到我的Qt項目。我嘗試添加該行:

win32:LIBS += c:\dnsssd.lib 

在.pro文件中沒有成功。此外,我試圖將dns_sd.h和dns_sd.c文件添加到我的項目中,並且遇到了一些錯誤,如:

'UINT8':未命名類型 'INT8':未命名類型 「UINT16」沒有指定類型 「INT16」沒有指定類型

最後,我現在想在這個環節通過xcimo描述 link text

我不知道修改的lib文件如果我使用正確的命令來正確修改這些文件。

回答

5

由蘋果公司分發的的.lib只能用,如果編譯與MSVC的Qt應用程序編譯器。

否則,就像你說的,你需要一個兼容GCC的庫(.a)。要做到這一點,你需要做以下步驟:

  1. 運行reimp工具[0]上的.lib:reimp dnssd.lib。將生成一個文件DLLStub.obj
  2. 在.dll:gendef dnssd.dll上運行gendef工具[1]。將生成一個文件dnssd.def。 .dll可以從:C:\Windows\System32獲得,如果您使用32位或從C:\Windows\SysWOW64使用64位版本。
  3. 組裝最終的.a:dlltool -k -d dnssd.def -l libdnssd.a
  4. 添加正道的int .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:我知道作者得到它的工作,但我覺得應該有一些關於如何完成它的更詳細的說明 - 信息分散在互聯網上。

+0

嗨,我已經將dnssd.lib文件轉換爲libdnssd.a,但QT仍抱怨同樣的錯誤,'UINT8'沒有命名一個類型。 – Jerry 2014-08-13 12:12:56

0

嘗試增加

DEFINES += _WIN32 

到您的項目文件。

0

我想通了,你需要使用reimp和DLL工具來修改的lib庫以.a

+0

嗨,你介意給一些細節。我沒有運氣來解決編譯錯誤。 – Jerry 2014-08-13 12:14:00