Скомпилируйте надстройку Firefox в Visual Studio 2012

Возможный дубликат:
Компиляция приложения MFC из Visual Studio 2010 в RC 2012 приводит к LNK2038

Я перемещаю проект надстройки XPCOM Firefox из Visual Studio 2010 в Visual Studio 2012. Когда я открываю проект, Visual Studio спрашивает, хочу ли я, чтобы проект использовал последний компилятор C++. Если я скажу нет, я получаю эту ошибку компиляции:

Ошибка 1, ошибка MSB8020: не удается найти инструменты сборки для Visual Studio 2010 (набор инструментов платформы = 'v100'). Чтобы построить с помощью инструментов сборки v100, щелкните меню «Проект» или щелкните решение правой кнопкой мыши, а затем выберите «Обновить проекты VC++...». Установите Visual Studio 2010 для сборки с помощью инструментов сборки Visual Studio 2010. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets 42 5 FF (Visual Studio 2010)

Если я скажу «да», я получу пять из этих ошибок компиляции для xpcomglue_s_nomozalloc.lib в каталоге xulrunner-sdk\lib:

ошибка LNK2038: обнаружено несоответствие для «_MSC_VER»: значение «1600» не соответствует значению «1700»

Я не могу установить Visual Studio 2010. Я полагаю, что мог бы скомпилировать Gecko самостоятельно, используя Visual Studio 2012, хотя это кажется большой работой, и я не уверен, что это сработает. Поэтому, пожалуйста, дайте мне знать, как лучше всего скомпилировать мою надстройку Firefox в Visual Studio 2012.


person HappyNomad    schedule 07.10.2012    source источник
comment
Я уже видел этот пост, и этот вопрос не является дубликатом. В данном случае речь идет именно о библиотеках XPCOM/Firefox.   -  person HappyNomad    schedule 07.10.2012
comment
Вам нужно будет перекомпилировать все ваши .libs или ссылки времени выполнения с библиотеками DLL. Решение должно применяться.   -  person Lex Li    schedule 08.10.2012
comment
Это должно применяться, поэтому я упомянул об этом в своем вопросе, но: (1) Будет ли конечный результат работать с Firefox? и (2) Есть ли лучшее решение, например. бинарный файл, который уже скомпилирован как таковой?   -  person HappyNomad    schedule 08.10.2012
comment
Меня поражает, как пять модераторов вместе могут ошибаться. Сила в количестве! Мне лично все равно, так как Владимир Палант уже дал мне ответ, который мне нужен. Но если вы хотите загрязнить SO такими фальшивыми флажками-дубликатами, продолжайте.   -  person HappyNomad    schedule 09.10.2012
comment
@HappyNomad В ответах дубликатов говорится, что эта проблема вызвана несоответствием версий компиляторов. Похоже, здесь дело обстоит именно так, так что это обман. Если вы все еще считаете, что это было ошибочно закрыто, вы можете поднять проблему в мета (PS: это не моды, их пять таких пользователей, как вы. Если вы сможете убедить пять пользователей согласиться с вами, что это не обман, он будет открыт повторно).   -  person NullUserException    schedule 09.10.2012
comment
Ответ говорит гораздо больше, чем просто это. Вы знаете, что значит более конкретно? Одни только теги должны дать понять, что тема отличается. Спасибо, что разъяснили, кто его закрыл. Но зачем мне тратить время на Мету?   -  person HappyNomad    schedule 09.10.2012
comment
Все еще не открылись? Следовало ожидать. Ну что ж, еще один полезный и уникальный, но закрытый ТАК вопрос. По крайней мере, они не удалили его (пока).   -  person HappyNomad    schedule 04.02.2013


Ответы (1)


Когда вы компилируете бинарные компоненты XPCOM, вы должны использовать тот же компилятор, который использовался для компиляции самого Firefox, иначе бинарная совместимость просто не будет обеспечена. В настоящее время это означает использование Visual C++ 10, будь то через бесплатную Visual Studio Express 2010 или каким-либо другим способом.

Если целью компонента XPCOM является просто запуск некоторого собственного кода, вы можете вместо этого скомпилировать обычную DLL и вызвать ее через js-ctypes, тогда вы можете использовать любой компилятор, который вам нравится - без ограничений бинарной совместимости (это также обычно рекомендуется, поскольку вам больше не нужно перекомпилировать для каждого выпуска Firefox).

person Wladimir Palant    schedule 08.10.2012