将lua源添加到项目,给出链接器错误

时间:2015-02-24 16:02:06

标签: c++ lua lua-api

我已将lua源添加到我的DLL项目中(删除了lua.c和luac.c)。我有以下代码作为VS中的DLL项目,我得到一个lua_createtable()链接器错误(lua_newtable()是一个调用lua_createtable()的宏)。奇怪的是lua_createtabel()在lapi.c中定义,生成.obj,因此不确定为什么会出现链接器错误。

#define DLL_EXPORT __declspec(dllexport)

#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"

#define PI (3.14159265358979323846)

static int miles_to_km(lua_State *L)
{
    double miles = luaL_checknumber(L, 1);
    double km = miles * 1.609;
    lua_pushnumber(L, km);
    return 1;   /* one result */
} /* end of miles_to_km */

static int circle_calcs(lua_State *L)
{
    double radius = luaL_checknumber(L, 1);
    double circumference = radius * 2 * PI;
    double area = PI * radius * radius;
    lua_pushnumber(L, circumference);
    lua_pushnumber(L, area);
    return 2;   /* one result */
} /* end of miles_to_km */

static const luaL_Reg testlib[] =
{
    { "miles_to_km", miles_to_km },
    { "circle_calcs", circle_calcs },
    { NULL, NULL }
};


/*
** Open msg library
*/
DLL_EXPORT int luaopen_msglib(lua_State *L)
{
    //luaL_openlib(L, "msg", msglib, 0);

    lua_newtable(L);
    //luaL_setfuncs(L, testlib, 0);
    //lua_setglobal(L, "Test");

    return 1;
}

1 个答案:

答案 0 :(得分:0)

哈哈,太晚了。

去掉#include "lauxlib.h"可以解决这个问题