我试图在C中创建一个lua dll,但是GCC说“未定义对'luaL_checknumber'的引用“

huus2vyu  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(171)

我在创建我的本地Lua库时遇到了一些问题。我看过几个教程,一步一步地教我如何做,但它总是给出这些错误。
关于这个错误,它说有三个未定义的引用,但我很肯定所有的头文件都在项目中。
这是我的C代码:

#include "lua.h"
#include "lauxlib.h"
#include <stdio.h>

static int l_mult50(lua_State *L) {
    double number = luaL_checknumber(L, 1);
    lua_pushnumber(L, number*50);
    return 1;
}

int luaopen_libnativefunc(lua_State *L) {
    static const struct luaL_Reg nativeFuncLib [] =
    {
        {"mult50", l_mult50},
        {NULL, NULL}
    };

    luaL_register(L, "nativelib", nativeFuncLib);
    return 1;
}

我做的和我在一个教程中看到的完全一样,因为我希望至少编译到dll的步骤能够工作。
如何编译:
第一个
我的文件夹:

ulydmbyx

ulydmbyx1#

我假设你需要它来编译你自己的C库(因为代码和LOVE论坛上的教程完全一样)。你忘了在GCC命令中包含“lua51.dll”。首先,你需要去你安装“LOVE”的文件夹,从那里借用DLL文件,并把它放在你的项目的文件夹中(你的“nativefunc.c”所在的文件夹)。
然后,您可以使用以下命令运行批处理文件:

gcc nativefunc.c -c -fpic
gcc -L./ -llua51 nativefunc.o -shared -o libnativefunc.dll

另外,不要忘记检查DLL是否使用了与GCC编译器相同的处理器架构(x64或x86)。如果不是,DLL将与程序不兼容,您将收到以下错误:“%1不是有效的Win32应用程序”。

相关问题