>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >XPCOM компонента и msvcr71.dll http://forum.mozilla-russia.org/viewtopic.php?id=11932 |
Anatolik > 16-08-2006 15:36:48 |
Здравствуйте, Написана DLL-ка в которой 3 xpcom компоненты. Для разработки использовал MS VS2003 .NET - и никак не могу избавиться от динамической линковки к msvcr71.dll При попытке изменить Code Generation -> с Multi-threaded Dll на Multi-threaded ImageShackCom error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj) после чего в настройках линковщика ставлю игнорить msvcrt.lib и получаю ImageShackCom error LNK2019: unresolved external symbol __imp__stat referenced in function _GRE_GetGREPath ------------------------------------------------- можно ли как-то решить этот вопрос? Кто как решает этот трабл? |
cesspit > 17-08-2006 11:30:50 |
вроде как от 2003, как раз в system32 и надо её пихать. Это от 2005й (8.0) mfc и сишный рантайм лежат в папке %windir%\WinSxS, и грузятся по манифесту, который лежит в ресурсах бинарника. И то такой фокус работает тока в >=WinXP. Честно говоря не видел, чтобы в MSDN было написано, что нельзя кидать msvcr*.dll в system32, не дашь ссылочку? |
Anatolik > 20-10-2006 16:14:28 |
вот ссылка на первоисточник - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_c_run.2d.time_libraries.asp Цитата: The msvcrt.dll is now a "known DLL," meaning that it is a system component owned and built by Windows. It is intended for future use only by system-level components. An application should use and redistribute msvcr71.dll, and it should avoid placing a copy or using an existing copy of msvcr71.dll in the system directory. Instead, the application should keep a copy of msvcr71.dll in its application directory with the program executable. "
статическая линковка к msvcr71.dll - это моя цель, т.к. я не могу с собой таскать msvcr71.dll. или динамически прилинковаться к более ранней версии msvcrt, чтобы например компонента могла работать в Win 2000. Тип проект - DLL, я уже писал об этом. |
Anatolik > 05-02-2007 12:11:06 |
привет всем. Мои XPCOM компоненты работают с standalone glue линковкой, тогда как по заявлениям разработчиков с irc.mozilla.org не должны, т.к. этот вид линковки предназначен сугубо для embedders . Однако, использование dependent glue линковки (с Gecko SDK 1.7), предназначенной для XPCOM компонент, дает следующий результат - проект не компилится в debug и работает только на браузерах с движком 1.7, хотя по возможности используются FROZEN интерфейсы. Таким образом dependent glue линковка и выставление ключа /MT и msvcrt.lib в игнорируемые либы - позволяет отвязаться от msvcr71.dll зависимости . В Gecko SDK 1.8 никак проблем с билдом в релиз и дебаг не выявлено в dependent glue линковке. |
Anatolik > 19-02-2007 13:43:31 |
В продолжение темы, скачав последний Gecko SDK для ветви 1.7, т.е. 1.7.13 мне удалось добиться эффекта, которого я не мог добиться с 1.7.10. НО, пришлось за основу взять Frozen linkage: dependent glue (dependent on xpcom.dll) и при добавлении влага XPCOM_GLUE все билдится. Хочется отметить, что порядок lib файлов должен быть точь-в-точь как в доках. |