На какую lib в gecko 1.9.3 SDK я ссылаюсь, чтобы использовать moz_xmalloc()?
Я пытаюсь связать свое расширение XPCOM с SDK 1.9.3a3pre и получаю следующее:
ошибка LNK2001: неразрешенный внешний символ _moz_xmalloc
Итак, на какую библиотеку мне нужно ссылаться? В документации не сказано.
Это сейчас на Windows, но мне нужно, чтобы оно также работало на Mac и Linux (32-бит /64-бит).
Изменить: теперь с наградой.
Редактировать: Обновление: Оказывается, FF3.7 был отменен. Так что мне не нужно беспокоиться об этом до FF4.
5 ответов
ОпределитьXPCOM_GLUE
в свойствах определения препроцессора C++. Это исправит ошибку компоновки.
добавлять
MOZ_NO_MOZALLOC
в C++->Preprocessor->Definition свойство.использование
xpcomglue_s_nomozalloc.lib
вместоxpcomglue_s.lib
в компоновщике-> Ввод-> Дополнительные зависимости
Все будет хорошо!
Попробуйте определить MOZ_NO_MOZALLOC при компиляции вашего расширения, затем вы получите DLL, которая использует распределители вашего CRT. (Не забудьте использовать NS_* распределители для XPCOM-совместимой памяти.)
примечание для напоминания: еще одна опция, которая может вызвать это, даже если все остальное правильно настроено в проекте, указывает на неверную папку libs - например, 32-битную версию для 64-битной сборки.
редактировать v40 mozalloc.lib
изменил имя на mozglue.lib
и имеет несколько дополнительных методов.
редактировать v41 mozglue.lib
изменил имя на mozcrt.lib