Я строю свой C ++ XPCOM для расширения с Gecko SDK 24, но я получил ошибку ниже:
Error 15 error LNK2001: unresolved external symbol __imp__NS_CStringContainerInit2 xpcomglue_s_nomozalloc.lib
Error 16 error LNK2001: unresolved external symbol __imp__NS_CStringContainerFinish xpcomglue_s_nomozalloc.lib
Error 17 error LNK2001: unresolved external symbol __imp__NS_CStringContainerInit xpcomglue_s_nomozalloc.lib
Error 18 error LNK2001: unresolved external symbol __imp__NS_GetServiceManager xpcomglue_s_nomozalloc.lib
Error 19 error LNK2001: unresolved external symbol __imp__NS_GetComponentManager xpcomglue_s_nomozalloc.lib
Error 20 fatal error LNK1120: 5 unresolved externals ..\..\..\firefoxExtension\xpi\components\gecko24\nsWin32Util.dll
Препроцессор:
MOZ_NO_MOZALLOC
XP_WIN
XP_WIN32
Дополнительная зависимость:
xpcomglue_s_nomozalloc.lib
Я использовал для сборки XPCOM с Gecko 10 и зависимости
nspr4.lib
xpcom.lib
xpcomglue_s_nomozalloc.lib
Но я не могу найти nspr4.lib и xpcom.lib в Gecko 24, так каковы правильные настройки для Gecko 24?
Попробуйте связать с xul.lib? Обратите внимание, что это временный обходной путь; апстрим становится довольно откровенно враждебным по отношению к двоичным расширениям, и вам, вероятно, повезет больше, если вы будете делать это с помощью JS-ctypes. Хотя не проверял это против номозаллока; не уверен, насколько хорошо это будет работать.
Других решений пока нет …