2012-01-23 61 views
0

請幫助我爲這個MOZILLA程序丟失LIB。 試圖創建使用nsICookieManager2 我試圖與在Mozilla SDK 問候對於nsiCookieManager2程序缺少符號

C中的所有現有庫的cookie:\代碼> cl.exe時FFCookie.cpp/I 「C:\ XULRunner的-SDK \包括」 mozalloc.lib xpcomglue.lib /鏈接/ LIBPATH: 「C:\ xulrunner的-SDK \ lib中」

符號缺少:

FFCookie.obj:錯誤LNK2019:解析外部符號「公共:無效 __thiscall nsCOMPtr_base :: assign_from_gs_contractid_with_er ROR(類nsGetServiceByContractIDWithError常量&,結構NSID常量&) 「 (assign_from_gs_contractid_with_error @ nsCOMPtr_base @@ QA EXABVnsGetServiceByContractIDWithError @@ ABUnsID @@@ Z?)在 函數引用」 公衆:__thiscall nsCOMPtr的:: nsCOMPtr的(類 nsGetServiceByContractIDWithError常量&) 「 (?? 0 $ @ nsCOMPtr的@@@@ VnsICookieManager QAE @ ABVnsGe tServiceByContractIDWithError @@@ Z)

FFCookie.obj:錯誤LNK2019:無法解析的外部符號」 市民:無效 __thiscall nsCOMPtr_base: :assign_from_qi(類nsQueryInter面,結構NSID常量&)」 (assign_from_qi @ nsCOMPtr_base @@ QAEXVnsQueryInterface @@ ABUnsID @@@ Z?) 函數引用 「公衆:__t hiscall nsCOMPtr的:: nsCOMPtr的(類 nsQueryInterface)」( ??? 0 $ @ nsCOMPtr的VnsICookieMan ager2 @@@@ QAE @ VnsQueryInterface @@@ Z)FFCookie.exe:致命錯誤LNK1120 :2無法解析的外部

#include "nsICookieManager.h" 
#include "nsICookieManager2.h" 
#include "nsServiceManagerUtils.h" 
#include "nsComPtr.h" 
#include "nsNetCID.h" 
#include "nsStringAPI.h" 
#include "mozilla-config.h" 
int main() 
{ 

    nsresult rv; 
    nsCOMPtr<nsICookieManager> cookieManager = do_GetService (NS_COOKIEMANAGER_CONTRACTID, &rv); 
    NS_ENSURE_SUCCESS(rv, rv); 

    if (cookieManager) 
    { 
     nsCOMPtr<nsICookieManager2> cookieManager2 = do_QueryInterface(cookieManager); 
     if (cookieManager2) 
     { 
     cookieManager2->Add(NS_LITERAL_CSTRING("ud.abc.com"), 
         NS_LITERAL_CSTRING("//"), 
         NS_LITERAL_CSTRING("TK"), 
         NS_LITERAL_CSTRING("abc"), 0x1, 0x1, 0, -1); 

     } 
    } 
    return 0; 
} 

問題:

我沒有找到關於功能文檔的任何信息包括哪些LIB(正如我在MSDN上找到的那樣)

關於如何計算出對應於MOZILLA特定功能的LIB的任何線索。

回答

0

問題不在lib中,符號缺失在xpcomglue庫中定義。但是,您似乎有一些編譯參數與用於編譯XULRunner/Firefox的參數不匹配。您的編譯器正在尋找的符號包含「QAEX」作爲參數描述,而庫使用「QAIX」定義它們。看看the name mangling table,編譯器期望unsigned char其中Mozilla具有unsigned int。我懷疑,原因是你沒有Unicode支持編譯你的應用程序 - 將main()更改爲wmain()

+0

我試着用UNICODE標誌將main()更改爲wmain(),但仍然沒有解決問題 – dpb

+0

感謝您的分析輸入。真的很感激他們。我錯過了一些哈希defs XP_WIN和XP_WIN32 – dpb