分类存档: c+lua

lua-cjson在vs2015下编译

lua-cjon是一个支持lua中使用json的开源库,基于linux平台开发。

可以使用mingw32编译出windows下的库。

因为我希望vs2015进行编译(主要其它库在windows平台都是使用的vs2015,没有使用mingw),

出现错误1:

原因:strncasecmp是linux下的函数,windows平台对应等价函数为_strnicmp,

解决方案:

在strbuf.h中添加以下代码:

#if defined(_WIN32) || defined(_WIN64)
  #define strncasecmp _strnicmp
#endif

顺利解决。

参考:http://botsikas.blogspot.com/2011/12/strcasecmp-identifier-not-found-when.html

出现错误2:

参考:https://msdn.microsoft.com/en-us/library/4t91x2k5.aspx

原因是 在64位系统上,指针是64位,这里按32位进行输出了,所以导致输出一个警告。

 

我们可以直接忽略,因为只是一个输出不影响运行。

mingw遇到的一个问题

自己的写一小段代码:

#include <stdio.h>
#include <string.h>
#include <lua.h>

int main(int argc,char* argv[]){
        lua_State* L=luaL_newstate();
        char tmp[1024];
        while(!feof(stdin)){
                fgets(tmp,sizeof(tmp),stdin);
                printf("%4lu %s\n",strlen(tmp),tmp);
        }
        return 0;
}

在win7 64位,mingw下编译总是报警告:

format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'size_t' [-Wformat=]    test3.c    /test7/src    line 18    C/C++ Problem

google了一下,试了各种方法,也无结果。
突然灵感一来,想起来mingw是32位系统,难道是因为这个原因,下载mingw64试下。

安装mingw64:http://sourceforge.net/projects/mingwbuilds/

 

eclipse-c 在windows平台下编译lua

最近几天有点空闲,想重拾c及lua。

目前c及lua的开发方式还是很火的一种方式,也是非常便捷。

云风使用c+lua做的服务器skynet及游戏引擎enjoy2d。

我也准备以上面两个开源项目来学习。

因能力所限,还只能借助于ide来进行开发学习。

下载eclipse-c

下载mingw,这个东西用起来感觉比cygwin方便。

在preferences->c/c++->build->enviroment设置环境变量。

这里我设置了PATH MINGW_HOME C_INCULUDE_PATH CPLUS_INCLUDE_PATH 4个环境变量

然后在lua工程中properties -> c/c++ general -> paths and symbos。

将C_INCLUDE_PATH 及 CPLUS_INCLUDE_PATH 添加至GNU C。

OK,可以正常的编译lua,也不报“Unresolved inclusion”错误。

编译云风大神的ejoy2d,成功后无法运行,直接程序就死掉,没有任何提示信息,偶然见到有个人提到驱动更新,把自己的显卡驱动更新为最新,顺利解决掉问题。