Здание mod_helloworld.lpr - PullRequest
       34

Здание mod_helloworld.lpr

1 голос
/ 20 октября 2010

Я пытаюсь построить пример apache для mod_helloworld.lpr, C: \ lazarus \ components \ fpweb \ demo \ helloworld \ apache

Лазарь 0,9.29
FPC Verion 2.4.3 SVN 27129
i386-win32

После добавления $(LazarusDir)\fpc\2.4.3\source\packages\fcl-web\src\ в другие файлы модулей (-Fu) он скомпилируется, но когда я собираю / связываю, я получаю ошибки

mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterCustomImageList
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterMenuItem
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterMenu
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterMainMenu
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterPopupMenu
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterDragImageList
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterControl
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterWinControl
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterGraphicControl
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterCustomControl
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterScrollingWinControl
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterScrollBox
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterCustomFrame
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterCustomForm
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterHintWindow
mod_helloworld.lpr(38,1) Fatal: There were 15 errors compiling module, stopping

я пытаюсь добавить lcl или что-то еще, но на самом деле я понятия не имею.

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Понял ... он думает

после добавления Interfaces к причине использования, я могу заставить mod_helloworld скомпилировать.

Я не знаю, откуда это взялось, ноя помню, как делал это, чтобы получить компиляцию CGI.

, но проблема сейчас в том, что моя установка apache не будет исключением .dll

LoadModule mod_helloworld "C: \ lazarus \ components \ fpweb \demo \ helloworld \ apache \ mod_helloworld.dll "

httpd.exe: синтаксическая ошибка в строке 63 файла C: / Program Files / Apache Software Foundation n / Apache2.2 / conf / httpd.conf:Не удается загрузить C: / lazarus / components / fpweb / demo / hellow orld / apache / mod_helloworld.dll на сервер: указанный модуль не найден.

, но я не могу опубликовать это как новый вопросв ближайшее время

0 голосов
/ 20 октября 2010

У меня была такая же проблема под Ubuntu 10.04 LTS amd64.

Посмотрите на Проблема компиляции проекта WebLaz под Lazarus.

Это также может помочь: Как я могу выборочно скомпилировать модуль Lazarus Apache для Apache 1.3, 2.0 и 2.2?

Я выбрал опцию «удалить ненужные папки» и заставил fpc.cfg всегда указывать на httpd22.

Я знаю, что это не лучшее, поэтому я дам более подробное объяснение.

Предположим, что FPSRC содержит путь к исходным файлам FPC, FPCUNITS содержит предварительно скомпилированные модули, а FPCCFG содержит путь к файлу fpc.cfg.

Если вы посмотрите на FPCCFG, вы найдете блок, который решает, какая версия Apache:

#IFDEF FPCAPACHE_1_3
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd13/
#ELSE
#IFDEF FPCAPACHE_2_0
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd20/
#ELSE
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd22/
#ENDIF
#ENDIF

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

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

Теперь у нас есть еще одна проблема: она не связана с нужным процессором.

Если вы посмотрите на FPCUNITS, вы найдете 3 папки: httpd13, httpd20 и httpd22.

Теперь компилятор, ища правильную комбинацию папок и модулей, сначала найдет его под httpd13 или httpd20. Это бесполезно, если вам нужен модуль Apache 2.2, и он испортит все ссылки.

У меня нет «умного» решения для этой дилеммы, которое включает условные директивы, поэтому я просто удалил 2 папки, которые мне не нужны (После надлежащего резервного копирования на случай, если мне нужно скомпилировать / связать с другие версии Apache). В моем случае httpd13 и httpd20.

Мне также пришлось добавить "-fPIC" в параметры моего компилятора. Это было предложено в одном из сообщений об ошибках либо компилятора, либо компоновщика, но это единственное, что я ДЕЙСТВИТЕЛЬНО НЕ ЗНАЮ, если это глобальная вещь или просто моя 64-битная установка.

Я надеюсь, что это работает под Windows.

EDIT : я создаю проект с несколькими приложениями и буду использовать fpmake.pp для его компиляции. Как только я получу все изгибы из fpmake.pp, я также опубликую его, чтобы можно было избежать некоторых из этих проблем.

...