Какую библиотеку в gecko 1.9.3 SDK мне связать, чтобы использовать moz_xmalloc()?

Я пытаюсь связать свое расширение XPCOM с SDK 1.9.3a3pre и получаю следующее:

ошибка LNK2001: неразрешенный внешний символ _moz_xmalloc

Итак, на какую библиотеку мне нужно ссылаться? В документации ничего не сказано.

Сейчас это для Windows, но мне понадобится также для сборки на Mac и Linux (32-битная / 64-битная).

Изменить: теперь с наградой.

Изменить: Обновление: оказалось, что FF3.7 был отменен. Так что мне не нужно беспокоиться об этом до FF4.


person i_am_jorf    schedule 16.03.2010    source источник
comment
Я думал, что они перешли на JMalloc некоторое время назад. Откуда взялся этот xmalloc?   -  person Ignacio Vazquez-Abrams    schedule 19.03.2010
comment
Я просто включаю несколько заголовочных файлов nsIBlahBlahBlah. Если вы прочитаете ссылку на документацию в сообщении, она объясняет, что они делают. Х означает, что не может потерпеть неудачу. да.   -  person i_am_jorf    schedule 19.03.2010


Ответы (5)


определить 'XPCOM_GLUE' в свойстве определения препроцессора C++. Это исправит ошибку связывания.

person Rabindra Nath Sharma    schedule 08.11.2011
comment
Я уже определил «XPCOM_GLUE». тем не менее я получаю ту же ошибку, что и xpcomglue_s.lib(GenericFactory.obj): ошибка LNK2001: неразрешенный внешний символ __imp__moz_xmalloc. Что будет проблемой? - person Prabhu; 03.01.2012

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

person miara    schedule 19.03.2010
comment
mozalloc не было в xulrunner sdk (для Windows), который я скачал. Где ты взял это? - person i_am_jorf; 19.03.2010
comment
Я писал расширение для Thunderbird, и до этого я собирал Thunderbird из исходников (используя последнюю версию comm-central), и эта библиотека находилась в папке mozilla/dist/lib в каталоге сборки Thunderbird, так что в вашем случае это, вероятно, не решение. . Сказал ли компоновщик, где произошла ошибка связывания (на какой объект ссылался символ)? - person miara; 19.03.2010
comment
xpcomglue_s.lib(nsCOMPtr.obj): ошибка LNK2001: неразрешенный внешний символ _moz_xmalloc xpcomglue_s.lib(nsComponentManagerUtils.obj): ошибка LNK2001: неразрешенный внешний символ _moz_xmalloc - person i_am_jorf; 21.03.2010
comment
Почти уверен, что вы правы насчет того, что мне тоже нужно связать... Мне просто интересно, где это взять. Возможно, они еще не создали его для Windows, поэтому его нет в xulrunner SDK? Может просто нужно дождаться беты? - person i_am_jorf; 21.03.2010
comment
можете ли вы дать мне ссылку на mozalloc.lib, я не могу найти его в последней версии SDK Mozilla Central. - person Priyank Bolia; 01.08.2010

Попробуйте определить MOZ_NO_MOZALLOC при компиляции вашего расширения, после чего вы получите DLL, которая использует распределители CRT. (Не забудьте использовать распределители NS_* для XPCOM-совместимой памяти.)

person Neil    schedule 13.04.2010
comment
О, это относится к моим интересам! Я попробую. - person i_am_jorf; 14.04.2010
comment
У меня это не сработало, даже после использования этого получения: неразрешенный внешний символ __imp__moz_xmalloc - person Priyank Bolia; 01.08.2010

  1. Добавьте MOZ_NO_MOZALLOC в свойство C++->Preprocessor->Definition.

  2. Используйте xpcomglue_s_nomozalloc.lib вместо xpcomglue_s.lib в Linker->Input->Additional Dependencies

Все будет хорошо!

person Hao Dong    schedule 24.05.2013

напоминание: другой вариант, который может вызвать это, даже если все остальное, кажется, настроено в проекте правильно, указывает на неправильную папку libs — например, 32-разрядная версия для 64-разрядной сборки.

edit v40 mozalloc.lib изменил имя на mozglue.lib и имеет несколько дополнительных методов.

edit v41 mozglue.lib изменил имя на mozcrt.lib

person Greg Domjan    schedule 01.11.2013