首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建mod_helloworld.lpr

构建mod_helloworld.lpr
EN

Stack Overflow用户
提问于 2010-10-20 05:11:57
回答 2查看 678关注 0票数 1

我正在尝试构建C:\lazarus\components\fpweb\demo\helloworld\apache的apache示例mod_helloworld.lpr

Lazarus 0.9.29

FPC标准2.4.3 SVN 27129

I 386-win32 32

在将$(LazarusDir)\fpc\2.4.3\source\packages\fcl-web\src\添加到其他Unit (-Fu)之后,它将编译,但是当我构建/链接时,会得到错误

代码语言:javascript
复制
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之类的东西,但我真的不知道。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-20 23:23:01

弄明白了..。它认为

在将Interfaces添加到用户原因之后,我可以让mod_helloworld编译。

我不知道这是从哪里来的,但我记得我这么做是为了得到一个CGI的联合编译。

但是现在的问题是,除了.dll之外,我的apache安装是不会的。

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

httpd.exe: C:/Program //Apache2.2/conf/httpd.conf:无法加载C:/lazarus/components/fpweb/demo/hellow /apache/mod_helloworld.dll第63行的语法错误:无法找到指定的模块。

不过,我很快就会把这作为一个新问题提出来。

票数 1
EN

Stack Overflow用户

发布于 2010-10-20 10:45:47

在Ubuntu10.04LTS amd64中,我也遇到了同样的问题。

看看Problem compiling a WebLaz project under Lazarus.

这个可能也有帮助:How can I compile a Lazarus Apache module to Apache 1.3, 2.0 and 2.2 selectively?

我选择了“删除不必要的文件夹”选项,并强迫fpc.cfg始终指向httpd22。

我知道这不是最好的,所以我会给出更详细的解释。

让我们假设FPSRC包含FPC源文件路径,FPCUNITS包含预编译单元,fpc.cfg包含fpc.cfg文件的路径。

如果您查看一下FPCCFG,就会发现一个块来决定Apache的哪个版本:

代码语言:javascript
复制
#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

按照建议的here,您可以将这些指令放在FPCCFG的顶部,这样编译器就可以到达正确的文件夹。

因此,如果需要编译源,那么FPC可以在哪里找到它们。

现在我们有了另一个问题:它不能与右路连在一起。

如果您查看FPCUNITS,您会发现3个文件夹: httpd13、httpd20和httpd22。

现在,编译器在寻找正确的文件夹/单元组合时,将首先在httpd13或httpd20下找到它。如果您想要一个Apache2.2模块,并且会破坏所有的链接,这是没有好处的。

对于这个困境,我没有一个“聪明”的解决方案,它涉及条件指令,所以我只是删除了我不想要的两个文件夹(经过适当的备份,以防我需要针对其他Apache版本编译/链接)。就我而言,httpd13和httpd20。

我还必须将"-fPIC“添加到编译器选项中。这是来自编译器或链接器的错误消息之一,但这是我唯一不知道的事情,它是一个全局的事情,还是我的64位设置。

不过,我希望这在Windows环境下能奏效。

编辑:我正在构建一个多应用程序项目,并将使用fpmake.pp来编译它。一旦我摆脱了fpmake.pp的所有缺陷,我也会发布它,这样我们就可以避免其中的一些问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3974952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档