【问题标题】:lua5.2 call c dll in windowslua5.2在windows中调用c dll
【发布时间】:2015-02-27 22:34:18
【问题描述】:

我的 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中编译dll并生成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中编译dll并生成skypeAnalyzer.dll,但是运行lua代码时出现如下错误:

谁能帮帮我?

【问题讨论】:

    标签: c windows dll lua lua-api


    【解决方案1】:

    您的 lua 代码需要自己。

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

    使用 lua 5.1,您会得到更有用的错误跟踪:

    lua5.1: ./foo.lua:1: loop or previous error loading module 'foo'
    stack traceback:
            [C]: in function 'require'
            ./foo.lua:1: in main chunk
            [C]: ?
            [C]: ?
    

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多