Здравствуйте.

Возникла необходимость в программу на С++ встроить Gecko-броузер вместо IE.
Читал мануал на mozilla.org - видимо он очень устарел т.к. в дистрибутиве Gecko SDK есть не все файлы, указанные в мануале.

Может кто знает где найти примеры встраивания Mozilla'овского броузера в приложение. Или мануал корректный. Буду рад даже пошаговому текстуальному описанию, в общем, любой помощи.

Gecko SDK впервые увидел вчера, было бы больше опыта - не спрашивал бы.
Скачал wxEmbed-пример, но там, видимо, чего-то нехватает... думаю в ближайшие пару дней разберусь, чего именно.

Заранее всем спасибо.

T-Rex пишет

Читал мануал на mozilla.org - видимо он очень устарел т.к. в дистрибутиве Gecko SDK есть не все файлы, указанные в мануале.

Чего именно?

Appendix A: Setting up the Gecko SDK

...
When you extract the SDK, it should have the layout seen in
http://www.mozilla.org/projects/xpcom/book/cxc/html/appA.html#1001431

На скриншоте больше 2х десятков папок, в дистрибутиве только 4 - bin, include, idl, lib

Сырцов Мозиллы не качал - мне нужно чтобы после встраивания броузера, программа не подходила под описание derivative work - т.е. не основывалась на сырцыах броузера, а только на SDK.

Структуру, AFAIK, поменяли. Мне же хотелось узнать следующее: каких именно файлов из мануала не хватает?

Похоже, если структуру поменяли, то теперь указанные файлы называются по-другому. В либах 7 штук *.lib файлов, в мануале 5. Это из явно видимых отличий. Больше пока сказать не берусь.

Mash, Вы, часом, не подскажете пошаговое руководство по настройке SDK в том виде, в котором оно сейчас есть? Или руководство по встраиванию Gecko для начинающих?

Попытался сейчас из исходников открыть wxEmbed.dsp, но моя студия (2003) ругнулась при конвертации: "Cannot load the project due to a corrupt project file". Да и README ссылаются на какую-то wxMozilla. Откровенно говоря, я в этом деле профан, т.к. мои знания плюсов оставляют желать лучшего, просто темой заинтересовался. Максимум, что я делал, так это писал пару-тройку строк, пытаясь прикрутить SQLite к этому примеру.

Подсказать наверное не смогу, а то боюсь что вообще не в ту степь уведу. :)

Попробуйте спросить на xpoint; там есть более толковые в этих вопросах люди.

Mash, если решитесь ради академического интереса все-таки довести пример до рабочего состояния - дайте мне знать. e-mail в профиле. Могу помочь с wxWidgets (wxEmbed на ней основывается). Там, в идеале, должен получиться кросс-платформенный проект.

Кстати сказать, после копания в мэйкфайле примера, пришел к выводу, что пример для компиляции требует исходник Мозиллы.

А за ссылочки спасибо - пойду посмотрю что под ними :)

Возможно, Вам стоит подписаться на mozilla-devel@lists.altlinux.org и обсудить эту проблему там.

Спасибо, просмотрел темы дискуссий, там 80% Linux-related, но иногда попадаются и по Win32...

Standard Mozilla embedding example application for win32. Basic browser, menus, toolbar, URLbar, html area.

-http://lxr.mozilla.org/seamonkey/source/embedding/tests/mfcembed/MfcEmbed.cpp

Во всех примерах, MFCEmbed, wxEmbed и т.д. нехватает многих файлов (скачал папку целиком, в некоторых html-файлах, в которых должен быть исходный код, так и написано, "This file does not exist"). С момента их написания, видимо, API успело достаточно сильно измениться. пытаюсь собрать wxEmbed - ничего не получается... пока вот, почти избавился от разногласий в версиях API, но все-равно, многих заголовков нехватает, наверное прийдется качать весь исходник Мозиллы :( с моим соединением на это неделя уйдет :(

T-Rex
Хе-хе! Скажу больше, файлов не хватает и в исходниках! API не изменилось (изменилось, но не сильно), протсо многие файлы генерируются во время сборки из исходников. Кстати, MFCEmbed входит в сорцы в качестве примера и во время сборки тоже компилируется...

Ага, значит, теоретически после получения исходника Мозиллы у меня есть шанс еще и рабочий пример получить... ладно...
Хотя вот кусок кода, который во всех примерах... в SDK ни одного упоминания о NS_IWEBBROWSER_IID нету (наверное только в сырцах найти можно)... ну хоть об этом-то они могли позаботиться?

nsresult rv;
mWebBrowser = do_CreateInstance(NS_IWEBBROWSER_IID, &rv);
if (!mWebBrowser || NS_FAILED(rv)) return NS_ERROR_FAILURE;

T-Rex
И не только теоретически! :) У меня собралось... NS_IWEBBROWSER_IID будет в одном из заголовков сгенерированных при сборке...

ЗЫ: Начсёт "могли позаботится" - опытным путём выяснил, что вид генерируемых заголовков и статических библиотек сильно зависит от ключей указанных при сборке, видимо поэтому они и не включены в комплект...

Черт... видимо, с таким раскладом, вся моя работа подпадает под описание derivative work. Надо тогда думать как сделать так чтобы мой компонент поставлялся без исходного кода Mozilla, в противном случае прийдется делать его OpenSource, что неприемлемо :(

Есть здесь люди, которые могут толково объяснить, в каких случаях производные библиотеки-компоненты-программы, использующие код Mozilla должны распостраняться с исходным кодом? Macromedia, на сколько я помню, выпустила какой-то продукт на основе Mozilla'овского движка, но он не OpenSource.

T-Rex пишет

наверное прийдется качать весь исходник Мозиллы с моим соединением на это неделя уйдет

Максимум 4-5 часов на дайлапе: tar.bz2 <-- http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.8b1/source/

Оно того стоит.

Уже качнул... ;) вечером сяду разбирать сырцы и попробую скомпилить.
Там они еще предлагали тулзы для компиляции wintools-dotnet.zip. Я так полагаю, что это для VS.NET, еще не смотрел.
Скачал ActiveX - да, вроде работает. Только там надо еще разобраться как ЭТО вставить в приложение на wxWidgets (тогда о кросс-платфоренности прийдется забыть). И еще как перевести его в режим редактирования... думаю в Google Groups найду.

Скажите пожалуйста, а есть ли возможность собрать Mozilla без использования cygwin? Не хотелось бы иметь зависимость от cygwin1.dll

ЗЫ: А есть ли в природе готовые файлы проекта для сборки в VisualStudio.NET ?

Вот пошаговое описание действий:

- скачал сырцы Мозиллы, распаковал в C:/mozilla
- скачал тулзы для компиляции в VS.NET 2003, распаковал, по ходу переименовав папку buildtools в c:/mozilla/moztools
- скачал cygwin, заинсталил в c:/mozilla/cygwin
- скачал ActivePerl, заинсталил в c:/mozilla/perl
- скачал библиотеки для MS VC++ 2003

http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/vc71-glib-1.2.10-bin.zip
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/vc71-libIDL-0.6.8-bin.zip

- написал такой батник для настроек переменных среды

ENV.BAT

Выделить код

Код:

@ECHO OFF

set HOME=c:\mozilla

set MOZ_BITS=32
set MOZ_TOOLS=%HOME%\moztools
set OS_TARGET=WINNT
set WINOS=%OS_TARGET%
set _MSC_VER=1310

cd %MOZ_TOOLS%\windows
call install.bat
cd %HOME%

set GLIB_PREFIX=C:\mozilla\win32build\vc71

set LIBIDL_PREFIX=C:\mozilla\win32build\vc71

SET PATH=C:\mozilla\win32build\vc71;%PATH%
SET PATH=C:\mozilla\win32build\vc71\bin;%PATH%
SET PATH=C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin;%PATH%
SET PATH=C:\Program Files\Microsoft Platform SDK\Bin;%PATH%
SET PATH=%SystemRoot%\system32;%PATH%
SET PATH=%SystemRoot%;%PATH%
SET PATH=%SystemRoot%\System32\wbem;%PATH%
SET PATH=C:\mozilla\Perl\bin;%PATH%
SET PATH=C:\mozilla\cygwin\bin;%PATH%
SET PATH=C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE;%PATH%
SET PATH=C:\Program Files\Microsoft Platform SDK\Bin\Win64;%PATH%

set PATH=%PATH%;%MOZ_TOOLS%\BIN
set PATH=%PATH%;%HOME%\PERL\BIN
set PATH=%PATH%;%HOME%\CygWin\bin
set PATH=%PATH%;%HOME%\moztools\windows\include

SET LIB=
SET LIB=%LIB%;C:\Program Files\Microsoft Platform SDK\Lib;
SET LIB=%LIB%;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib;
SET LIB=%LIB%;C:\Program Files\Microsoft SDK\Lib\IA64

set DISABLE_TESTS=0

set MOZ_SRC=%HOME%
set MOZ_NO_ACTIVEX_SUPPORT=1
set CONFIG_SHELL=SH.EXE

call "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\VCVARS32.BAT"

Этот батник проинсталил мне тулзы и настроил переменные среды... вроде не ругнулся ни разу

- запустил cygwin, перешел в c:/mozilla
- открыл cmd запустил env.bat
- После этого запускаю

Выделить код

Код:

nmake -f client.mk build

Выдает ошибку

Выделить код

Код:

Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation.  All rights reserved.

client.mk(101) : fatal error U1033: syntax error : '=' unexpected
Stop.

Пробовал запускать из cygwin, выдает точно такую же ошибку :(
Ошибка возникает на установке переменных среды в мэйкфайле

Выделить код

Код:

MODULES_suite :=                              \
  
SeaMonkeyAll                                  \
  
mozilla/ipc/ipcd                              \
  
mozilla/modules/libpr0n                       \
  
mozilla/accessible                            \
  
mozilla/security/manager                      \
  
mozilla/toolkit                               \
  
mozilla/storage                               \
  
mozilla/db/sqlite3                            \
  
$(NULL)

Подскажите плз., что я упустил... почему ругается?

Скажите пожалуйста, а есть ли возможность собрать Mozilla без использования cygwin? Не хотелось бы иметь зависимость от cygwin1.dll

Цугвин нужен только на этапе сборке - используются утилиты из него. Сборка от cygwin1.dll не зависит.

ЗЫ: А есть ли в природе готовые файлы проекта для сборки в VisualStudio.NET ?

К сожалению природа пока на это не разродилась...

nmake -f client.mk build

А по рукам? :D nmake - это Микрософтовый make. Юниксовых make-файлов не понимает. Тебе нужно делать так:

Выделить код

Код:

gmake -f client.mk

При этом последовательность действий такая:
- запускаешь cmd
- потом env.bat (всё из того же cmd!)
- потом цугвин (опять же из уже запущенного cmd!)
- делаешь make.

На счет nmake - нашел в одной из мурзилок в сети...
На счет gmake - муторно ему от этого мэйкфайла
На счет cygwin - скушал вроде мэйкфайл... сейчас бьюсь с зависимостями :)

Я не знаю как... но оно собралось %)
Правда пришлось сделать ему NO_MFC (неприятно, конечно, но что ж тут поделаешь) и MOZ_NO_ACTIVEX_SUPPORT (а то ATL из PlatformSDK оно неадекватно воспринимает).

Не знаю, получалось ли у кого-нибудь собрать Мозиллу не имея предустановленно VisualStudio (используя только бесплатный VC++ ToolKit 2003 и PSDK), но ИМХО это невозможно (т.к. в ATL-заголовках PSDK указаны библиотеки, которые в самой PSDK имеются только для 64-битных процессоров)

А еще я пришел к выводу, что не стОит слушать всяких умных дядек из-за бугра, т.к. их мануалы все-равно не работают (почти правильный мануал нашел здесь на mozilla.ru - по сборке FF и TB из сырцов)... немного пришлось позаморачиваться, но эффект есть. :)

Всем спасибо за помощь со сборкой. Но я думаю что это еще не конец :)

У меня получилось собрать пример wxEmbed, но оказалось что Мозилла библиотеки подгружает динамически (MultiThreaded DLL), сам файл mozilla.exe весит всего 64 КБ, что только подтверждает мои догадки, а мне нужно чтобы подгружала статически (MultiThreaded), дабы убрать зависимости при переносе на другую машину.

В файле mozilla/mozilla/.mozconfig есть строки

Выделить код

Код:

ac_add_options --disable-shared
ac_add_options --enable-static

... или .mozconfig у меня при сборке не использовался... или... одно из двух...

Не подскажете, какие переменные среды нужно установить перед сборкой для обеспечения статической линковки библиотек?

Как бы там ни было, примеры заработали, и моя проблема почти решена. У меня получилось перевести окно броузера в примере в режим редактирования, что изначально и было целью :) осталось только разобраться, как сохранять внесенные изменения. Жаль, конечно, что прийдется таскать за собой кучу библиотек (не мозилловских), но это меньшее из зол.

Как-нибудб на досуге попробую качнуть исходник FF и постараюсь прикрутить его библиотеки к примеру.

Если есть необходимость, могу выложить куда-нибудь полное описание действий по сборке Mozilla-1.8b1, в помощь остальным страждущим.

T-Rex Выкладвай сюда (или куда-нибудь ещё :)), перенесём в wiki.

ДЛЯ СБОРКИ НУЖНА Visual Studio .NET 2003

Скачать исходник Мозиллы
http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.8b1/source/mozilla-source-1.8b1.tar.bz2
Распаковать в C:\
Скачать инструменты для компиляции с помощью MS VisualStudio .NET 2003 (VC++ v7.1)
http://ftp.mozilla.org/pub/mozilla.org/mozilla/source/wintools-dotnet.zip
распаковать в C:\ переименовав папку buildtools в moztools
Скачать glib и libIDL для VC++ v7.1
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/vc71-glib-1.2.10-bin.zip
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/vc71-libIDL-0.6.8-bin.zip
Распаковать в C:\
Скачать и установить cygwin (достаточно пакетов, предлагаемых в установке по умолчанию. При установке убедитесть что пакеты make, tar, zip также будут установлены)
Скачать и установить ActivePerl в C:\Perl

Скачать и установить Platform SDK (на данный момент последняя версия MS PSDK for Win2003 sp1)
Скачать и установить MS Visual C++ ToolKit 2003 (не обязательный шаг... я устанавливал для подстраховки)

Пишем BAT-файл для автоматизации сборки (C:\build.bat)

Выделить код

Код:

@ECHO OFF
SET PATH=C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin;C:\Program Files\Microsoft Platform SDK\Bin;C:\vc71\bin;C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;C:\Program Files\Microsoft Platform SDK\Bin;C:\Program Files\Microsoft.NET\SDK\v1.1\Bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\wbem;C:\moztools\bin;C:\cygwin\bin;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE;C:\Program Files\Microsoft Platform SDK\Bin\win64;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322;C:\masm32\BIN;C:\Perl\bin
SET LIB=C:\Program Files\Microsoft.NET\SDK\v1.1\Lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib;C:\masm32\LIB;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\lib;C:\Program Files\Microsoft Platform SDK\Lib\IA64;C:\Program Files\Microsoft Platform SDK\Lib;C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;
SET INCLUDE=C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include;C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;C:\Program Files\Microsoft.NET\SDK\v1.1\include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include;C:\Program Files\Microsoft Platform SDK\include\Win64\crt;C:\masm32\INCLUDE;C:\Program Files\Microsoft Platform SDK\Include\mfc;C:\Program Files\Microsoft Platform SDK\include
SET GLIB_PREFIX=C:\vc71
SET LIBIDL_PREFIX=C:\vc71
SET MOZ_TOOLS=C:\moztools

SET CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
SET HOME=C:\mozilla
SET CVS_RSH=ssh
SET MOZ_BUILD_APP=suite
SET MOZILLA_OFFICIAL=1
SET BUILD_OFFICIAL=1

SET OS_TARGET=WINNT
SET WINOS=%OS_TARGET%

SET NO_MFC=1
SET ENABLE_TESTS=
SET DISABLE_TESTS=1
SET MOZ_NO_ACTIVEX_SUPPORT=1

ECHO Installation environment variables set!
@ECHO ON
cd .\mozilla
make -f client.mk build
pause

В c:\mozilla\configure в строках

Выделить код

Код:

if 
test "$_MIDL_MAJOR_VERSION" != "5" -a "$_MIDL_FULL_VERSION" != "6.00.0347" -a "$_MIDL_FULL_VERSION" != "6.00.0361" -a "$_MIDL_FULL_VERSION" != "6.00.0364"; then
             
{ echo "configure: error: Midl version $_MIDL_FULL_VERSION was found.  Midl version must be 5.x.x (VC6*) or 6.00.0347 (VC7) or 6.00.0361 (VC.net 2003) or 6.00.0364 (VC 2005)." 1>&2; exit 1; }
         
fi

заменить 6.00.0361 на 6.00.0366 т.к. midl.exe в Platform SDK имеет версию 6.00.0366

Всё, теперь можно собирать
Запускаем cmd
Из из консоли

Выделить код

Код:

cd C:\moztools\windows\
install.bat 
cd \
build.bat

и ждем :)

Вроде ничего не упустил

А как назвать-то статью?

Да так и назови "Сборка Mozilla 1.8 с помощью компилятора от Microsoft под Windows"
Так поисковики будут лучше индексировать :)

Добавил в Wiki.
http://forum.mozilla.ru/doku.php?id=general:build_vsnet2003:mozilla

А еще я пришел к выводу, что не стОит слушать всяких умных дядек из-за бугра, т.к. их мануалы все-равно не работают (почти правильный мануал нашел здесь на mozilla.ru - по сборке FF и TB из сырцов)... немного пришлось позаморачиваться, но эффект есть.

Это точно! Я Мозиллу собирал на VS6 SP5, хотя везде написано, что при установленном SP5 сборка становится невозможной... :)

А у кого-нибудь есть опыт встраивания Gecko по средствам VS 2005?

Необходимо встроить движок Gecko в приложение под .NET, пробую разобраться с исходниками риложения wxEmbed - ничего не выходить. Приложение требует скомпилированной Mozilla ... Попытался сделать всё как описано - реакции 0! make не находиться (пишет что make.exe незнакомая команда).

Ещё не понятна последовательность запуска:
из moztools необходимо запустить install.bat - но переменную MOZ_TOOLS устанавливается ПОТОМ при вызове build.bat
Где логика?

P.S. С С++ сталкивался ооочень не надолго и очень давно....

Я думаю вам встраивание Gecko на данном этапе не осилить. Это ведь не плюшки лопать ;) Тем более что

С С++ сталкивался ооочень не надолго и очень давно....

.
Даже если вы скомпилите Gecko, то после этого его надо будет использовать.

К сожалению, с Gecko не связывался, по решению проблемы

пишет что make.exe незнакомая команда

могу порекомендовать вот это. Там под win32 все есть.

Копайтесь, разбирайтесь.

ЭЭЭ Ну мне нужно всего-лишь сделать wrapping. Думаю справлюсь (плюшки я впрочем тоже люблю)

Так с make похоже облажался я, неправильно установив cygwin. Сейчас попробую переставить.....

softmax пишет

Ну мне нужно всего-лишь сделать wrapping.

Ну тогда ладно, прощаю ;)

Так, вроде компиляция сдвинулась с мёртвой точки, но до конца не дошла. Запнувшись вот на этом
LINK : fatal error LNK1117: syntax error in option 'DEBUGTYPE:BOTH'
make[6]: *** [nsldap32v50.dll] Error 93
make[6]: Leaving directory `/cygdrive/d/dotNetProjects/embed/mozilla/directory/c-sdk/ldap/libraries/libldap'
make[5]: *** [export] Error 2
make[5]: Leaving directory `/cygdrive/d/dotNetProjects/embed/mozilla/directory/c-sdk/ldap/libraries'
make[4]: *** [export] Error 2
make[4]: Leaving directory `/cygdrive/d/dotNetProjects/embed/mozilla/directory/c-sdk/ldap'
make[3]: *** [export] Error 2
make[3]: Leaving directory `/cygdrive/d/dotNetProjects/embed/mozilla/directory/c-sdk'
make[2]: *** [ldap] Error 2
make[2]: Leaving directory `/cygdrive/d/dotNetProjects/embed/mozilla'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/cygdrive/d/dotNetProjects/embed/mozilla'
make: *** [build] Error 2

Крайне рекомендую пользоваться туториалом в Wiki. Только что перепроверил у себя - работает.
На счет wrapper'а... я тут немного перековырял сырцы примера и wxMozilla, сделал немного попроще... вроде работает.
Будет желание - пишите на e-mail, попробуем разобраться с вашей проблемой

Ещё не понятна последовательность запуска:
из moztools необходимо запустить install.bat - но переменную MOZ_TOOLS устанавливается ПОТОМ при вызове build.bat
Где логика?

Логика в том что писал я универсальный батник чтобы без проблем компилилось ;) собственно, свою функцию он выполняет (для VS2003). На счет 2005й... ухъ.. там столько всего в новом компиляторе наворочено, что я не могу сказать точно на счет того, удастся ли скомпилить им... на днях попробую, может получится... я пока пользуюсь сборкой созданной с VC++ ToolKit 2003

Кстати, я тоже заинтересован во wrapper'е для .NET, если все удастся - просьба поделиться :)
Ыыы.. и еще одно, там вроде неплохой ActiveX был для Mozilla'овского броузера.. и он даже работает, может было бы проще поиспользовать именно его?

ActiveX нашёл - но клиенту это не подходит он НЕ хочет завязываться на всяких COM activeX и прочее...
Насчёт ЭТОЙ проблемки я её убил просто убрав строку 'DEBUGTYPE:BOTH' из параметров вызова sh.exe. Вроде проходит, но вот теперь другая трабла - вылетает xpidl.exe с сообщением:

The application failed to initialize properly (0x80000003).

/cygdrive/d/dotNetProjects/daVinchi/mozilla/build/cygwin-wrapper ../../dist/bin/xpidl.exe -m header -w -I/cyg
drive/d/dotNetProjects/embed/mozilla/xpcom/base -I../../dist/idl -o _xpidlgen/nsIConsoleListener /cygdrive
/d/dotNetProjects/embed/mozilla/xpcom/base/nsIConsoleListener.idl
make[4]: *** [_xpidlgen/nsIConsoleListener.h] Error 3
make[4]: Leaving directory `/cygdrive/d/dotNetProjects/embed/mozilla/xpcom/base'
make[3]: *** [export] Error 2
make[3]: Leaving directory `/cygdrive/d/dotNetProjects/embed/mozilla/xpcom'
make[2]: *** [tier_2] Error 2
make[2]: Leaving directory `/cygdrive/d/dotNetProjects/embed/mozilla'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/cygdrive/d/dotNetProjects/embed/mozilla'
make: *** [build] Error 2

Мммм... а если попробовать поиграться с флагами для SHARED/STATIC build? Я уже не помню.. где-то в makefile'ах было... Я тогда пытался сделать полностью статическую сборку и у меня не получилось... как-то оно по умолчанию собиралось всё с Multithreaded DLL.
Еще возможно что инструменты для сборки или библиотеки из пункта "Скачать glib и libIDL для VC++ v7.1" коряво работают с 8й версией компилятора... Уточните plz, вы все-таки с помошью 2005й студии пытаетесь собрать или с помощью тех инструментов, которые указаны выше?

Собираю руководствуясь документацией из WIKI.  MS Visual C++ ToolKit 2003 не устанавливал.
Пути в батнике переписаны с учётом путей для VS 2005.

Кстати по поводу  "Скачать glib и libIDL для VC++ v7.1" я использовал вот эти библиотеки: http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/historic/vc8/vc8_moztools.zip а не VC71.

OK, я тогда тоже сегодня попытаюсь скачать всё что нужно для компиляции с VS2005 и посмотрим что получится... все равно пора бы уже перевести мой компонентик на 2005ю

Да, еще одно.. что-то я не могу на mozilla'овском сайте найти те библиотеки libIDL и glib для 8й версии компилятора... вы пользуетесь теми что для 7.1 или где-то можно взять и для 8й?

...
Вопрос снят :)

Буду благодарен, если поделитесь результами...

Хммм.. у меня та же ошибка выскакивает.
В общем-то проблему удалось локализировать.
в moztools libIDL и glib упорно требуют msvcr80.dll ... решил проблему, скормив им библиотеки из папки C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT, после чего начала проявляться та же ошибка что и у вас. Складывается такое впечатление что библиотеки эти откомпилированы с Code Generation = MultiThreaded DLL и компиляция Мозиллы тоже происходит с этим же флагом (принудительная установка аргументов --disable-shard --enable-final в client.mk при каждом вызове configure не дала результатов, как и в случае с VC7.1) По идее статическая линковка должна решить эти проблемы.
Или еще вариант, попытаться найти чего нехватает libIDL и остальным ДЛЛкам из moztools и скормить им то что им нужно. Очень похоже что они скомпилированы с использованием Managed Extensions и им нехватает каких-то Assemblies, которые должны валяться рядом с ними в одной папке

У меня тут еще вопросик образовался, вы часом не знаете, как пользоваться .mozconfig-файлом, в какую папку его ложить и что в батнике дописывать чтобы он использовался?
В нем как бы должны настройки сборки описываться, но что-то не получается у меня с ним собрать.
Файлик следующего содержания

Выделить код

Код:

. $topsrcdir/browser/config/mozconfig
export BUILD_OFFICIAL=1
export MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1
ac_add_options --disable-shared
ac_add_options --enable-static
ac_add_options --disable-activex
ac_add_options --disable-activex-scripting
ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --disable-logging 
ac_add_options --enable-svg
ac_add_options --enable-canvas

Честно говоря не знаю. Боюсь такие тонкости не для меня. Хотя попытаюсь покопаться в сети может что-нибудь и нарою....

Проблемку msvcr80.dll решил аналогично.

Теперь по проблемке - в забугорных ресурсах проскальзывала инфа, что мол надо прописывать пути к libIDL и glib - самыми первыми в PATH, но мне такое решение не помогло, спотыкается как и раньше ....

T-Rex

как пользоваться .mozconfig-файлом

Просто пользоваться. Писать в него нужные параметры.

в какую папку его ложить

Туда, где находятся исходники Mozilla, то есть в одну папку с файлом configure
Это кстати написано в http://forum.mozilla.ru/doku.php?id=general:build_msvc2003:firefox_thunderbird_msvc_.net_2003

и что в батнике дописывать чтобы он использовался?

Ничего не дописывать, он используется автоматически.

Unghost
Спасибо :)
Странно как-то... configure вызывается у меня с параметрами --disable-shared --enable-static, а на размер исполняемого файла того же xpidl.exe это никак не повлияло. Даже не знаю что и делать... может параемтры из .mozconfig считываются но не используются?

Может у кого-нибудь получалось собрать Мозиллу 2005й студией? Поделитесь опытом plz.

Честно говоря я уже отчаился ... буду ставить VirtualPC и компилять по 2003, потом переносить в 2005 - но уже под .NET

softmax, еще вариант попробовать скомпилить сырцы FF, говорят для них Static Build работает (лично не пробовал, только слухи... у меня исходник v1.5 валяется, всё руки не доходят чтобы скомпилить).
Если у вас есть время, попробуйте, может чего хорошего получится.

И еще.. кажись без исходников той же libIDL, которая ну явно собрана с флагом MultiThreaded DLL, вряд ли получится сделать полностью статический билд, не зависящий от библиотек рантайма, которые поставляются с 2005й студией.

Я не уверен что у меня в ближайшие дни будет время собрать FF из исходников, поэтому предлагаю вам сделать это раньше меня :) и поделиться впечатлениями. Если будут проблемы и с этим, тогда "будем посмотреть" что можно еще придумать.

Как я уже говорил, я тоже заинтересован в сборке всего этого хозяйства под 2005ю студию, поэтому постараюсь помочь чем могу...

Да.. попробуйте в мэйл-листах гугловских распросить людей, как они с этой проблемой борются, ... у меня тут где-то адреса пары форумов были в архивах... я поспрашиваю там, может чего получится узнать :)

Если будет время обязательно попробую с FF. Как временную меру, сделал следующее:

Поставил VirtualPC, под на него WinXP + VS2003. Откомпилировал - ессно всё ок!
Но вот беда не скомпилялся wxEmbed... Он должен компиляться вместе с mozilla? Или нет? Поясните плиз....

Вобще-то должен... но там таааааак коряво все сделано.. (хотя сам по себе у меня он скомпилился, но вот проект на его основе создать... это было нечто.. 4 часа мучился :))
У меня есть упрощенный вариант wxEmbed. Вроде компилился нормально.. если интересует - могу сбросить на e-mail.. там гибрид из wxEmbed и wxMozilla старого (т.к. новую версию я нашел только в исполнении на Python)

Если не ооочень затруднит сбросте плиз на softmax[сабака]hotbox.ru

Необходимо встроить движок Gecko в приложение под .NET

В исходниках в папке extensions лежит некий manticore

README пишет

Manticore Browser

Manticore is a web browser embedding Gecko and Trident (IE) using the IWebBrowser2 interface exposed by each layout engine's ActiveX wrapper. The front end is written in C# using
the .NET framework.

Да уж чего только нет в исходних Mozilla ))) Посмотрю обязательно....

Так, посмотрел manticore - если честно весьма корявая апликация, котороя к томуже не валидно завершается, ну да ладно. Никак не могу найти установку параметров Proxy! Как работет с ними (proxy-параметрами) mozctrlx.dll?

T-Rex
Огромное спасибо за проект!!!

Кстати сделал сравнение ActiveX компонент IE и Mozilla, в целом резулльтаты сопоставимые, как по памяти так и по скорости работы. в среднем мозилла еслт больше на 2-4 Мб.

Удалось скомпиляь FireFox под 2005-ую студию. Если интересуют подробности постараюсь выложить в ближайшее время!

Основня проблема - валился xpidl - для него просто скопировать xpidl.exe.manifest в то место откуда он вызывается!

Если не трудно, выложите, plz. пошаговое описание действий по сборке FF со ссылками.

Да, еще вопрос, FF собирается со статической линковкой или с динамической (с динамической большинство исполняемых файлов в каталоге bin имеют размер 64k)?

Я так полагаю что firefox.exe имеющий 135 К - одназначно показатель динамической сборки
Пошаговая инструкция - постараюсь в ближайшее время ...

Я сейчас подымаю DotNetEmbed (забытый Wrapper внутри mozill-овских исходников). Под Net 1.1. пример удалось оживить, но вот под 2.0 DotNetEmbed не компиляется корректно. Т.е. на выходе dll есть, но подключить её в .NET проекты невозможно. пишет FileNotFound. Естественно референс на Dll прописан.

По поводу компиляции - в соответсвии с рекомендациями людей умеющих работать с cygwin - я всё компилял в нём.
Masm32, Perl, VC++ Toolkit - ничего из этого не надо. Perl берётся из cigwyn (не забыть поставить соотв. package), masm32 есть в VS2005. Tollkit не нужен.

сперва запускаем ./configure ... с параметрами (вот ту п.3 они описаны: http://developer.mozilla.org/en/docs/VC8_Build_Instructions#Visual_Studio_2005
./configure --disable-activex --disable-activex-scripting --disable-xpconnect --disable-accessibility --enable-application=suite (или browser - если вся mozilla не нужна)
), потом make -f makefile.
Ждём момента когда завалиться xpidl.exe. После этого находим в глубинах mozilla xpidl.exe.manifest - и копируем его в dist (откуда этот dist и вызывается). В том же каталоге присутвуют exe и dll - для них также находим manifest ....

Вот вообщем-то если кратко, постараюсь через пару дней выложить подробную инструкцию....

Сходил посмотрел что там по ссылке... во 2м пункте указано что нужна Platform SDK.... вы ее устанавливали? По-идее, при наличии полной версии VisualStudio 2005 (не Express), необходимости в PSDK быть не должно (точно так же как и не должно быть необходимости в VC++ 2003 Toolkit при наличии нормальной VS2003 и правильно прописанных путей и переменных окружения).

T-Rex
Честно говоря установил....

Всё!!! DotNetEmbed под NET 2.0 покорён! Удалось получить 100% рабочий код.

Всё!!! DotNetEmbed под NET 2.0 покорён! Удалось получить 100% рабочий код.

Надеюсь, у вас найдется время для написания небольшой статейки по этому поводу ;)

Какой небольшой! Писать подробную статья в наш Wiki. Со всеми заковыками :)

К концу недели оринтеровочно в пятницу будут подробности... Раньше сложновато.

Итак, небольшое исследование процесса компиляци FireFox. И описание того как мне удалось скомпилировать cей непокорный тул при помощи MS Visual Studio 2005
Сразу скажу что опыта  именно такой работы у меня практически нет. C cygwin(linux) не работал, с командной строкой не то что не дружу - просто стараюсь обходиться без неё. Посему пользовался помощью знащих людей.

Итак для компиляции firefox под 2005-ую студию вам необходимо следующее:
1. Исходники firefox (Я использовал вот этот firefox-1.5.0.3-source.tar.bz2)
3. Библиотеки moztools (vc8-moztools)
2. Установленная MSVS 2005 есс-но с поддержкой С++
3. Установленный Platform SDK. (Я использовал Windows XP SP2 SDK )
4. Установленный Cygwin. Список packages, которые нужно устанавливать (взято отсюда  http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites):

ash -- UNIX-like command line interpreter shell (Base category)
coreutils -- GNU core utilities (includes fileutils, install, sh-utils, and textutils) (Base category)
cvs -- concurrent versions system (Devel category)
diffutils -- file comparison utility (Base category)
findutils (Base category)
gawk -- pattern matching language (Base and Interpretors categories)
grep -- text search tool (Base category)
libiconv -- character set conversion (Devel category)
make -- dependency analyzer for software builds (Devel category)
patchutils -- a small collection of programs that operate on patch files (Devel category)
perl -- a scripting language used to control parts of the build (Interpreters category)
sed -- a search and replace language (Base category)
tar -- file archiving program (Base category)
X11 -- X Window tools (Install whole X11 category)
unzip -- zip file extraction (Archive category)
upx -- the Ultimate Packer for eXecutables (Utils category)
zip -- zip file creation (Archive category)

5. Главное

Как я понял проблема компиляции заключается в том чтобы в правильной последовательности определить пути к
приложениям, библиотекам и h-файлам. Причём дело осложняется ещё и тем что часть файлов обрабатывается приложениями cygwin и требуют описание путей в стиле unix, другая часть требует описания в стиле DOS. Но главное все переменные я устанавливал внутри cygwin-shell-а. Грубо говоря писал bat-файл в стиле unix. Установку производил через .batch_profile который находиться в cygwin\home\<имя_пользователя>\.batch_profile. Если ваш компутер - компутер домена, то скорее всего ЭТОЙ папки у ВАС не будет. Вам потребуется создать её самостоятельно (при помощи того же cygwin), или же определить  переменные через другой файл (sh-скрипт например). Кроме того знающие люди ооочень рекомендовали использовать ТОЛЬКО КОРОТКИЕ ИМЕНА при установке переменных окружения. Я этому совету следовал. Хотя скоре всего проблемы могут возникнуть из-за пробелов в именах папок, а не из-за длины имени.

Теперь непосредственно скрипт

# C:\MVC – Папка с установленной MS Visual Studio 2005
# C:\PSDK  – Папка с Platform SDK
# C:\projects\vc8-moztools – Библиотеки moztools

export MOZ_TOOLS=`cygpath -a -u С:/projects/vc8-mo~1`
export PATH=/cygdrive/c/mvc/Common7/IDE:/cygdrive/c/mvc/Common7/Tools/Bin:/cygdrive/c/mvc/VC/bin:$PATH
export WIN32_REDIST_DIR="c:\\mvc\\VC\\redist\\x86\\Microsoft.VC80.CRT"

export PATH=$MOZ_TOOLS/bin:$PATH
export PATH=$WIN32_REDIST_DIR:$PATH

export NO_MFC=1
export MOZ_INSTALLER_USE_7ZIP=1

export INCLUDE="c:\\mvc\\vc\\include;c:\\psdk\\include;$INCLUDE"
export LIB="c:\\mvc\\vc\\lib;c:\\PSDK\\lib;$LIB"

6. После того как переменные установленны, в той же сессии cygwin, идём в папку с ff и выполняем:
./configure --disable-activex --disable-activex-scripting --disable-xpconnect-idispatch --disable-accessibility --enable-application=browser (suite, и т.д. в зависимости о того что нужно скомпилять)

7. Если configure отработало нормально запускаем make: make -f makefile.

8. В процессе компиляции получаем косяк с xpidl.exe (он просто вылетает). Вылетает он из-за отсутствия manifest-файла. Находим его в глубинах ff и кидаем его в dist\bin. Настоятельно рекомендую точно также скопировать .manifest файлы для всех остальных exe и dll файлов которые вы найдёте в dist\bin

9. Всё дальше косяков быть не должно. За исключением отсутвия manifest-файла для самого firefox.exe. Можно создать его вручную (по аналогии с xpidl.exe).

Вот вообщем-то и весь алгоритм.
Если кто-нить объяснит как заставить сборщик ff обрабатывать правильно manifest файлы - буду благодарен. А уж если кто-нить напишет DOS-bat файл для компиляции без запуска cygwin явно - будет вообще здорово!

Жду коментариев!

X11 -- X Window tools (Install whole X11 category)

Ухъ... как же не хочется ЭТО качать... :( попробую без него, может получится

Попробую в ближайшее время скомпилить... может получится как-нибудь упростить процесс сборки. Уж очень не хочется в cygwin ковыряться... я вобще его воспринимаю как "необходимое зло" ибо лишние зависимости при сборке это очень и очень плохо. В этом плане меня порадовали исходники Miranda IM - там просто проект для VS, не требующий никакого дополнительного ПО.

T-Rex
Скорее всего получиться ... Лично я к тому что приведено в ваших доках (cygwin packages). добавил помоему только perl и помоему всё. Список я привёл для ГАРАНТИРОВАННОЙ работоспособности cygwin

Народ, есть ли у кого-нить представление как "чистый" Gecko - engine работает с Proxy?

Часть настроек я могу установить в defaults\profile\pref.js (на сколько я могу судить), но вот как прописать/передать пароль, который запрашивает сервер при аутентификации?

softmax пишет

Народ, есть ли у кого-нить представление как "чистый" Gecko - engine работает с Proxy?

Часть настроек я могу установить в defaults\profile\pref.js (на сколько я могу судить), но вот как прописать/передать пароль, который запрашивает сервер при аутентификации?

Реализуй nsIPromptService...
И когда будет запрошен пароль для входа - выйдет окошко (которое будет реализовано вами) для ввода пароля и логина.

Попробую..... Спасибо!
А без окошечка никак? Ну типа прописали где-нить и горя не знаем....

softmax пишет

Попробую..... Спасибо!
А без окошечка никак? Ну типа прописали где-нить и горя не знаем....

Подругому... хм.. ну у мозилы ведь есть пассворд менеджер... если сразу туда вписать.. а так больше не знаю..

Можно конечно и без окон... просто в функцию (которой нужно дать пароль) приходит параметр типа ссылка на ссылку... туда и пишем пароль который нужен. А интерфейс придется реализовать по любэ!

А надо ли как-то отдельно регистрировать объект имплементирующий nsIPromptService? Или можно обойтись без этого? В доке как-то странно описано регистрация nsIXXXX... сервисов. Как мне его зарегистрировать. И ещё - где моя аппликация должна хранить настройки для proxy?

softmax пишет

А надо ли как-то отдельно регистрировать объект имплементирующий nsIPromptService? Или можно обойтись без этого? В доке как-то странно описано регистрация nsIXXXX... сервисов. Как мне его зарегистрировать. И ещё - где моя аппликация должна хранить настройки для proxy?

Конечно нада регистрировать...
делается это так:

Выделить код

Код:

nsCOMPtr<nsIFactory> promptFactory;
	rv = NS_NewPromptServiceFactory(getter_AddRefs(promptFactory), this); //MakeFactory(getter_AddRefs(promptFactory));
	pPrompt = promptFactory;
	rv = nsComponentManager::RegisterFactory(kPromptServiceCID,
		"Prompt Service",
		"@mozilla.org/embedcomp/prompt-service;1",
		promptFactory,
		PR_TRUE);

а что это (NS_NewPromptServiceFactory) за ф-ия, смотри файл mozilla\embedding\browser\activex\src\control\PromptService.cpp и хидер....

смотри сэмплы.. там есть ответы на твои вопросы (правда иногда.. :))

а прокси хнаниться в настройках пользователя... иными словами делай следующее:
go to about:config
filter: proxy
и обязательно не забудь выставить proxy type (network.proxy.type)....

ааа так тебе программно это нужно ставить...
тада смотри интерфейс nsIPref

Выделить код

Код:

nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID, &rv));
rv = prefs->SetCharPref(_T("browser.startup.homepage"), m_bStartHome);

Syber
Здорово спасибо!!!

Ещё тебя потревожу ... Вот все эти nsIXxxxxX как я понял НЕ РЕАЛИЗОВАНЫ самим Gecko - engine? Где-то на mozilla.org  проскакивала инфа, что реализация этих самых интерфесов необходима если я скажем хочу поменять их СТАНДАРТНУЮ имплементацию, или всё же я прав - и всё необходимо реализовывать вручную.

softmax пишет

Syber
Здорово спасибо!!!

Ещё тебя потревожу ... Вот все эти nsIXxxxxX как я понял НЕ РЕАЛИЗОВАНЫ самим Gecko - engine? Где-то на mozilla.org  проскакивала инфа, что реализация этих самых интерфесов необходима если я скажем хочу поменять их СТАНДАРТНУЮ имплементацию, или всё же я прав - и всё необходимо реализовывать вручную.

что то реализовано, что то нет!
что то читал последнее предложение несколько раз - так и не въехал в него... но вроде суть его уловил (наверное уже устал от работы :)). по любому чтобы вызвать что то стандартное, к примеру менеджер закачек, нужно реализовать как минимум некоторый интерфейс (в данном случае nsIHelperAppLauncherDialog).
Честно говорят не пойму зачем тебе такая информация.... есть задача - есть решение!

Странно подключил nsIPromptService... Часть ф-ций работает - часть нет.
Скажем Alert вызывается корректно... А вот запрос на Proxy Autentification - нет! В чём может быть причина?
Может нужно ещё что-нить чтоб работать через proxy?

softmax пишет

Странно подключил nsIPromptService... Часть ф-ций работает - часть нет.
Скажем Alert вызывается корректно... А вот запрос на Proxy Autentification - нет! В чём может быть причина?
Может нужно ещё что-нить чтоб proxy работать через proxy?

хм.. даже не знаю что и сказать...
мне кажется должно работать - другого способа я не знаю :(
В любом случае если справишься с проблемой обязательно отпиши!

Немного не по теме - но разбираюсь с исходниками .NET библиотеки (которая DotNetEmbed) - понимаю что Open Source - это куча отрицательных сторон ... Гордая mozilla вместе с ff содержит в себе пример абсолютно безалаберного отношения к написанию программ. Да, конечно хорошо что DotNetEmebed есть, но я не вижу больших проблем в том чтобы привести код в какой-либо благородный вид перед тем как это выкладывать ... Мне бы например было бы стыдно!

softmax пишет

Немного не по теме - но разбираюсь с исходниками .NET библиотеки (которая DotNetEmbed) - понимаю что Open Source - это куча отрицательных сторон ... Гордая mozilla вместе с ff содержит в себе пример абсолютно безалаберного отношения к написание программ. Да, конечно хорошо что DotNetEmebed есть, но я не вижу больших проблем в том чтобы привести код в кай-либо благородный вид перед тем как это выкладывать ... Мне бы например было бы стыдно!

Атнюдь! :)
Это все потому - что mozilla портируется (linux\win\mac).
Я не думаю что проект operа выглядит лучше - имхо даже хуже...
Код в мозила выглядит оч. хорошо, а вам softmax что не нравиться?
Другое дело чего оч. не хватает для мозилы так это MZDN (MoZilla Developers Network), другими словами нехватает хорошего справочника!!!

Не буду тут приводить описание, но пример: 2 РАЗНЫХ класса юзают один cpp и 2  h-файла - не думаю что это есть  good! (Причём один из классов managed а другой unmanaged).   Зачем? Перлы вот такие:

Выделить код

Код:

NS_IMETHODIMP 
WebBrowserChrome::SetStatus(PRUint32 aType, const PRUnichar* aStatus) {
  return NS_OK;
}

я вообще молчу! Чехарда со скобками продолжается и в mfcembed. Неужели так удобно писать?
Конечно может я и привык к интуитивно понятному написанию исходников в Java или C# - но не думаю что на С++ пишут неряхи! Неужели трудно договориться об ОДИНАКОВОМ оформлении того что пишется. Просто наболело!

Прошу воспринимать не как брюзжание - а в порядке здоровой критики

2 cpp файла юзают один header файл - оч. удобно, а особенно в mozille. (мне нравиться - респект!)
Со скобками... нуу может быть и есть - мне пофиг!
Самое что мне не нравиться в исходниках так это горизонтальный скрол (просто ненавижу!!!)

Всем привет!
Есть вопросик! Кто-нибудь компилял embedding/activex/control/Master.dsw? Компиляется? Можно получить ActiveX компоненту?

И ещё вопросик - есть ли у кого - нибудь работающий MFCEmbed

Ещё скажите кто-нить честно!!!! Работает ли у вас Autentifiкация на Proxy??? MfcEmbed не открывает Диалога .... Где можно ввести Login/Password

Уважаемый All столкнулся с такое проблемкой - если выкачивать документ используя только сетевые сервисы (через NS_OpenURL()), то диалог аутентификации вызывается. В случае если сделать это используя Gecko, то диалога нет.... Кто-нить сталкивался с подобной ерундой?

Как ни странно проблема решилась ... Не завидую тем кто будет создавать Embeded аппликацию которой нужно будет работать через proxy.

Раньше использовал Mozilla ActiveX Control. Решил посмотеть на mfcEmbed. Ничего не понимаю... Стоит VS2003, и т.п... делаю как описано в WIKI. Единственная разница это Platform SDK for Windows Server 2003 R2. Пытаюсь собрать 1.8b ради работающего mfcEmbed получаю:

Выделить код

Код:

make[5]: Entering directory '/cygdrive/c/mozilla/directory/c-sdk/ldap/include'
Makefile:74: *** target pattern contains no '%'. Stop.
make[5]: Leaving directory '/cygdrive/c/mozilla/directory/c-sdk/ldap/include'
make[4]: *** [export] Error 2

...

make: *** [build] Error 2

Подскажите please как этого избежать или может у кого есть рабочии исходники с которых можно собрать mfcEmbed из VS2003

_RuS_ пишет

Раньше использовал Mozilla ActiveX Control. Решил посмотеть на mfcEmbed. Ничего не понимаю... Стоит VS2003, и т.п... делаю как описано в WIKI. Единственная разница это Platform SDK for Windows Server 2003 R2. Пытаюсь собрать 1.8b ради работающего mfcEmbed получаю:

Выделить код

Код:

make[5]: Entering directory '/cygdrive/c/mozilla/directory/c-sdk/ldap/include'
Makefile:74: *** target pattern contains no '%'. Stop.
make[5]: Leaving directory '/cygdrive/c/mozilla/directory/c-sdk/ldap/include'
make[4]: *** [export] Error 2

...

make: *** [build] Error 2

Подскажите please как этого избежать или может у кого есть рабочии исходники с которых можно собрать mfcEmbed из VS2003

:angry: У меня та же проблема. Как победить пока не знаю. Правда возникает она только если компилять --enable-application=suite, если --enable-application=browser, то этот ldap не компилируется и этой ошибки нет. Зато валится при сборке widget - куча unresolved externals: не нравится чем-то nsString :usch:
Был бы тоже признателен, если кто подскажет в чем проблема.

Проблема с версией cygwin. Сейчас точно не помню в чём именно. Постраюсь глянуть в понедельник на работе. Если ещё актуально конечно.

Пишу на C. Использую MSVS 2005. Знаю азы C++, но не использую (ибо пишу на C). Полагаю, что COM/DCOM/XPCOM - это такие порты ввода/вывода на PC. Хочу сделать приложение под Win32 (для начала), которое бы показывало окно без всего (для начала), в котором бы рендерились web-страницы. Т.е. embed'нуть gecko.
Вопрос: для меня всё кончено (нужно идти убивать себя головой об стену, либо учиться объектному программированию), или ещё есть надежда?
IE не предлагать.
ActiveX не предлагать.
GtkMozEmbed предлагать только вместе с готовым работающим билдом GtkMozEmbed.

P.S. Чисто академический интерес: при билде MZ/FF обязательно пользоваться cygwin'ом? Может, msys подойдёт?

нужно идти убивать себя головой об стену, либо учиться объектному программированию

Я так думаю, что не обязательно. Но со специализированными C-макросами из исходников mozilla придётся разбираться в любом случае.

Думаю следует начать с опровержения заблуждений относительно указанных технологий:COM/DCOM/XPCOM

Если можно писать XPCOM-компоненты на C, значит можно и эмбедить на C! Как-то. Ну, это чисто для справки, т.к. ВЫ, как я понял, мне помочь не в силах.
C-макросы действительно есть, но все объекты, используемые при эмбеддинге, написаны на C++. Но я не отчаиваюсь...

Предлагаю разработчикам Мозиллы учиться у этого человека. Скачал проект, открыл, билднул (без ошибок), кинул к рантаймам - работает.

LRN А можно архивы тут где-нибудь выложить, а то они с сайта все битые скачиваются :((

Кому-нибудь приходилось встраивать Gecko в приложение на C#?