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")()
Другие вопросы по тегам