2012-10-18 48 views
0

我有一個在所有以前版本中工作的FF工具欄。 我的工具欄部分用C++編寫。我試圖用xulrunner-sdk-15.0.1構建C++部分(我也試過xulrunner-sdk-16.0.1) 在這兩個版本中,我收到一個鏈接錯誤。用xulrunner-sdk-15.0.1編譯firefox擴展也是後來的版本

1>Link: 
1>  Creating library C:\Dev\Projects\fftoolbar\toolbar\src\components\vc2010\\..\bin\win32\agat.lib and object C:\Dev\Projects\fftoolbar\toolbar\src\components\vc2010\\..\bin\win32\agat.exp 
1>xpcomglue_s.lib(nsStringAPI.obj) : error LNK2001: unresolved external symbol __imp___snprintf 
1>xpcomglue_s.lib(nsCRTGlue.obj) : error LNK2001: unresolved external symbol __imp__rand 
1>xpcomglue_s.lib(nsCRTGlue.obj) : error LNK2001: unresolved external symbol __imp__srand 
1>xpcomglue_s.lib(nsCRTGlue.obj) : error LNK2001: unresolved external symbol __imp___fdopen 
1>xpcomglue_s.lib(nsCRTGlue.obj) : error LNK2001: unresolved external symbol __imp___dup 
1>C:\Dev\Projects\fftoolbar\toolbar\src\components\vc2010\..\bin\win32\agat.dll : fatal error LNK1120: 5 unresolved externals 
1> 
1>Build FAILED. 
1> 
1>Time Elapsed 00:00:06.39 
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== 

有人知道它如何解決?

回答

2

這些符號由msvcrt.lib(運行時庫)公開。因此,您可能將該項目配置爲忽略標準庫 - 那麼您需要明確地將msvcrt.lib添加到庫列表中。

以防萬一您不知道:js-ctypes允許您在擴展中編譯代碼,而無需使用二進制XPCOM組件併爲每個Firefox版本重新編譯它們。你可以在你的擴展中包含一個常規的Windows DLL,並使用js-ctypes來調用它的函數。缺點:該DLL無法訪問XPCOM。因此,如果您真的需要JavaScript不具備的低級別XPCOM訪問權限,那麼您無法避免使用二進制XPCOM對象。