使用luarocks将luasql 2.2安装到lua上以进行Windows安装

时间:2011-06-13 02:11:29

标签: lua luasql

所以事实证明lua for windows install上有一些早期2.1版本的luasql,我需要能够使用luasql 2.2(特别是mysql)。我花了一整天的时间尝试用luarocks安装这个东西,但一直在撞墙。这是我击中的第三面墙,但第一面我不知道哪里开始。

我运行:luarocks安装luasql-mysql MYSQL_DIR =“E:/ Programs / MySQL / MySQL Server 5.5”

它通过并输出(删除了很​​多输出,只是重复相同但不同的文件):

Extracting  luasql-2.2.0\src\jdbc
Extracting  luasql-2.2.0\src\jdbc\Makefile
... (lots of these here)
Extracting  luasql-2.2.0\vc6\sqlite.def

Everything is Ok

Folders: 17
Files: 84
Size:       358091
Compressed: 440320
cl /MD /O2 -c -Fosrc/luasql.obj -IF:/Code/Lua/5.1/include src/luasql.c -IE:/Prog
rams/MySQL/MySQL Server 5.5/include
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

luasql.c
cl /MD /O2 -c -Fosrc/ls_mysql.obj -IF:/Code/Lua/5.1/include src/ls_mysql.c -IE:/
Programs/MySQL/MySQL Server 5.5/include
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

ls_mysql.c
e:\programs\mysql\mysql server 5.5\include\mysql_com.h(291) : error C2061: synta
x error : identifier 'SOCKET'
e:\programs\mysql\mysql server 5.5\include\mysql_com.h(337) : error C2059: synta
x error : '}'
... (lots of these here, same errors just different lines)
E:/Programs/MySQL/MySQL Server 5.5/include\mysql.h(374) : error C2143: syntax er
ror : missing '{' before '*'
E:/Programs/MySQL/MySQL Server 5.5/include\mysql.h(374) : fatal error C1003: err
or count exceeds 100; stopping compilation

Error: Build error: Failed compiling object src/ls_mysql.obj

知道从哪里开始?我不得不a)安装独立的mysql(之前使用的是WAMP附带的,因为我之前已经使用过),以及b)安装visual studio 2010(到目前为止的c#和c ++版本),以及c)使用visual studio命令提示符运行luarocks的东西,如果我使用常规命令问题,它会在此之前中断。

我希望这对于熟悉编译C的人来说是一个容易解决的问题,而这似乎就是这样做的。

1 个答案:

答案 0 :(得分:0)

在第17行之后将以下内容添加到ls_mysql.c中:

#include <windows.h>

这样 windows.h 包含在 winsock.h 之后和 mysql.h 之前。

参考文献:

  1. http://forums.mysql.com/read.php?45,37472,37472
  2. C++ Redefinition Header Files (winsock2.h)