lua5.2在Windows中调用C DLL

以下是我的 C 代码:

skypeAnalyzer.h

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

//dll export func
int _declspec(dllexport) luaopen_skypeAnalyzer(lua_State* L);

skypeAnalyzer.c

#include "skypeAnalyzer.h"
#include <windows.h>
#include <wincrypt.h>

int run(lua_State* L){
    printf("------->>> Hi! %s \n", lua_tostring(L, 1));
    return 0;
}

struct luaL_Reg IrLibs[] = {

    { "run", run },
    { NULL, NULL }
};

int luaopen_skypeAnalyzer(lua_State* L)
{
    luaL_newlib(L, IrLibs);
    return 1;
}

以下是 Lua 代码:

require "skypeAnalyzer"
skypeAnalyzer.run("Lua")

我是在 vs express 2013 中编译并生成了 skypeAnalyzer.dll,但当我运行 Lua 代码时,出现以下错误:

C:\Lua>lua52.exe skypeAnalyzer.lua
lua52.exe: C stack overflow
stack traceback:
        [C]: in ?
        [C]: in function 'require'
        C:\Lua\skypeAnalyzer.lua:1: in main chunk
        [C]: in function 'require'


在编译 dll 时,如何动态调用 lua52.dll?如何在 VS 2013 中设置?我是在 vs express 2013 中编译并生成了 skypeAnalyzer.dll,但当我运行 Lua 代码时,出现以上错误。请问有人可以帮我吗?

点赞
用户258523
用户258523

你的lua代码正在要求它本身。

请为.dll.lua文件使用不同的名称。

对于lua 5.1,您将获得稍微更有用的错误跟踪:

lua5.1:./foo.lua:1:循环或先前加载模块'foo'时出错
堆栈回溯:
        [C]:function'require'
        ./foo.lua:1:在主块中
        [C]:?
        [C]:?
2015-01-01 03:39:55