У меня есть исходный код C ++ под названием DeepQ.cpp, из которого я пытаюсь вызвать определенные функции в сценарии lua DeepQLearner.lua. Этот скрипт lua использует пакеты Torch7. Я знаю, как вызвать простой сценарий Lua из C ++, но кажется, что ресурсов для изучения того, как включить в него Torch, не так много. Мои сценарии DeepQ.cpp и DeepQLearner.lua следующие:
DeepQ.cpp
#include <iostream>
#include <cstdlib>
extern "C" {
#include "lua.h"#include "lualib.h"#include "lauxlib.h"}
using namespace std;
lua_State* L;
int main (int argc, char** argv)
{
L = lua_open();
//load Lua base libraries
luaL_openlibs(L);
// initialize Lua
luaL_dofile(L, "/home/sp/DeepL/DeepQLearner.lua");
lua_getglobal(L, "initialize");
lua_call(L, 0, 1);
return(0)
}
DeepQLearner.lua
require 'cutorch'
require 'cunn'
require 'image
function initialize()
-- some code here
end
Это мой CMakeLists.txt, который прекрасно работает для вызова сценариев lua, если не используются модули Torch:
cmake_minimum_required (VERSION 2.4.6)
project (DeepL)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
set(CMAKE_BUILD_TYPE RelWithDebInfo)
find_package(Lua51 REQUIRED)
include_directories (
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${LUA_INCLUDE_DIR}
)
add_executable (${PROJECT_NAME} src/DeepQ.cpp)
target_link_libraries (${PROJECT_NAME} lua5.1)
Я думаю, что это не работает в случае Torch, потому что Torch по умолчанию использует LuaJIT. В CMakeLists.txt я пытался сделать find_package(LuaJIT REQUIRED)
но безуспешно Как изменить CMakeLists.txt так, чтобы код lua выполнялся с LuaJIT вместо Lua5.1, и пакеты Torch были правильно найдены, и какие другие файлы заголовков необходимо включить в файл .cpp? Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …