在VS2010中编译特定的apache模块

时间:2014-12-30 05:17:07

标签: c apache visual-studio-2010 visual-c++ lua

在过去的几天里,我一直在Windows上修改mod_pLua(https://sourceforge.net/projects/modplua/https://github.com/Humbedooh/mod_pLua)。

预构建的Windows二进制文件很有用,除了它似乎没有使用mod_dbd支持数据库连接进行编译。文档建议,要启用此功能,您必须使用某个标记进行编译,因此我一直在尝试在VS2010中编译该模块 - 希望我能够在某些时候获得mod_dbd支持 - 但是我遇到了麻烦。它只是不会编译。

到目前为止我做了什么:

  • 包括apache / include和apache / lib,它们已经摆脱了很多 错误
  • 包含来自Lua 5.2的lauxlib.h,lua.h,luaconf.h和lualib.h,它们摆脱了很多错误
  • 从Lua 5.2源代码编译了一个.lib文件并包含它,修复了一些错误

我目前遇到的错误是:

  

错误LNK2019:函数_lua_dbopen中引用的未解析的外部符号_luaL_openlib C:\ Users \ Michael \ Desktop \ Projects \ C \ mod_plua \ mod_plua.obj

这样的过多:

  

IntelliSense:类型" const char )的值(cmd_parms * cmd,void * cfg,const char * arg)"不能用于初始化类型" cmd_func"的实体。 c:\ users \ michael \ desktop \ projects \ c \ mod_plua \ mod_plua.h 394 5

由于我不是C / C ++本地人,我只是对错误的概念有一个模糊的概念,并且在我尝试修复问题时可能做错了。如果有人可以指导我朝着正确的方向发展(或者更好,那就写一下如何从头到尾编译模块的一些指导)我会很高兴。

我已在此处上传了我的VS2010项目文件和来源:https://dl.dropboxusercontent.com/u/51243175/mod_plua_vs2010.7z

2 个答案:

答案 0 :(得分:1)

自答案:

编译失败的主要原因是Lua .lib文件。 Microsoft编译器在处理C代码时做了一些奇怪的事情,所以我从LuaBinaries SourceForge存储库(http://sourceforge.net/projects/luabinaries/)获得了一个适当编译的.lib版本 - 具体来说,5.2.3 / Windows Libraries / Dynamic / lua-5.2 .3_Win32_dll10_lib.zip(为VS2010编译)。

这没有启用mod_dbd支持,这需要来自Apache APR项目的头文件和源代码,但它确实允许成功编译。

答案 1 :(得分:0)

你真的不应该使用mod_pLua,我已经有近3年的时间没用过了;)你应该使用mod_lua代替,它与httpd捆绑在一起并且工作方式几乎相同(尽管它不支持php像mod_pLua那样的脚本)

对于特定于DBD的设置(尤其是如何在Windows上使用它),请参阅http://modlua.org/api/database