如何从C++调用使用Torch7包的Lua脚本?

我有一个名为DeepQ.cpp的C++源代码,我正在尝试调用其中的某些函数,这些函数位于一个Lua脚本DeepQLearner.lua中。该Lua脚本使用Torch7包。我知道如何从C++调用简单的Lua脚本,但是似乎没有太多关于如何在其中包含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,只要不使用Torch模块就可以正常调用Lua脚本:

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,以便使用LuaJIT而不是Lua5.1执行lua代码,以及需要在.cpp文件中包含哪些其他头文件?提前感谢您的回答。

点赞