На какую 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++. Это исправит ошибку компоновки.

У меня та же ошибка, и ссылка на mozalloc помогает в этом.

  1. добавлять MOZ_NO_MOZALLOC в C++->Preprocessor->Definition свойство.

  2. использование 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

Другие вопросы по тегам