Я пытаюсь проверить загрузку C++ модуль DLL в Lua, используя «требуют», ниже C++ файл модуляне удалось загрузить модуль DLL с в Lua
#include <stdio.h>
#include <iostream>
extern "C" {
#include "lua/lualib.h"
#include "lua/lauxlib.h"
#include "lua/lua.h"
__declspec(dllexport) int luaopen_mylib(lua_State* L);
}
using namespace std;
static int libFunc1(lua_State* L)
{
int n = lua_gettop(L);
printf("in myfunc stack, arg number: %d\n", n);
if (lua_isstring(L, -1))
{
std::cout << lua_tostring(L, -1) << std::endl;
}
else
{
std::cout << "invalid arg" << std::endl;
}
return 1;
}
static const struct luaL_Reg mylib[] = {{"func1", libFunc1}, {NULL, NULL}};
int luaopen_mylib(lua_State* L)
{
cout << "loading my lib" << endl;
luaL_newlib(L, mylib);
return 1;
}
Я собирал этот CPP файл в библиотеку DLL с помощью г ++ в msys:
g++ -c -o mylib.o mylib.cpp
g++ -shared -o mylib.dll mylib.o -Llua -llua5.3.0
до сих пор все работает нормально, и у меня также был файл mylib.dll. но когда я пытаюсь загрузить модуль, я получил сообщ об ошибке:
> require("mylib")
error loading module 'mylib' from file '.\mylib.dll':
找不到指定的程序。
stack traceback:
[C]: in ?
[C]: in function 'require'
stdin:1: in main chunk
[C]: in ?
китайские символы выше среднего:
The specified function could not be found.
Я думаю, что «указанная функция» означает «luaopen_mylib», но Файл cpp имеет функцию: luaopen_mylib, ЧТО НЕПРАВИЛЬНО?
Что означают китайские иероглифы? –
извините за это! китайские символы означают: Указанная функция не может быть найдена. –