LuaBind и package.loadlib
Я пытаюсь просмотреть руководство по luabind здесь, http://www.rasterbar.com/products/luabind/docs.html, однако у меня проблемы с загрузкой библиотеки. В настоящее время я использую lua версии 5.1, поэтому я считаю, что я бы использовал package.loadlib вместо loadlib. Я сделал простую DLL, которая заключается в следующем:
#include <iostream>
#include <luabind\luabind.hpp>
void greet()
{
std::cout << "Hello world!\n";
}
extern "C" int init(lua_State* L)
{
luabind::open(L);
luabind::module(L)
[
luabind::def("greet", &greet)
];
return 0;
}
Это строит просто отлично. Однако я получаю сообщение об ошибке в lua при попытке запустить этот код:
package.loadlib("LuaTestLib.dll", "init")
greet()
В нем говорится, что приветствовать ноль. Как правильно загрузить функции из dll?
1 ответ
Из первых двух предложений package.loadlib
Документация:
Динамически связывает хост-программу с библиотекой C
libname
, Внутри этой библиотеки ищет функциюfuncname
и возвращает эту функцию как функцию C.
(выделение добавлено)
Это не выполняется funcname
, Он просто возвращает его как функцию для вызова. Вы все еще должны назвать это:
package.loadlib("LuaTestLib.dll", "init")()