使用luarocks将luasql 2.2安装到Windows版lua上。

结果发现lua for windows安装程序有早期版本的luasql 2.1,我需要使用luasql 2.2(特别是mysql)。我已经花了整整一天尝试使用luarocks安装,但一直碰壁。这是我撞到的第3面墙,但却是我连开始都找不到头的第一面墙。

我运行:luarocks install 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
...(很多这样的内容)
Extracting  luasql-2.2.0\vc6\sqlite.def

一切正常

文件夹:17
文件数:84
大小:       358091
压缩大小: 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 : '}'
...(很多这样的内容,同样的错误不同行)
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中提供的mysql,因为我之前已经在使用它),b)安装Visual Studio 2010(到目前为止是C#和C++版本),c)使用Visual Studio命令提示符来运行luarocks的东西,如果我使用常规命令提示符,它会在这之前就崩溃。

我希望这对熟悉编译C的人来说是一个容易解决的问题。

原文链接 https://stackoverflow.com/questions/6326075

点赞
stackoverflow用户1258352
stackoverflow用户1258352

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

#include <windows.h>

这样就可以在winsock.h之后和mysql.h之前包含windows.h

参考资料:

  1. http://forums.mysql.com/read.php?45,37472,37472
  2. C++ Redefinition Header Files (winsock2.h)
2012-03-20 08:59:24