如何从.NET调用luasql脚本

我在使用ZeroBrane IDE编写lua脚本,Visual Studio 2015编写C#代码。我能够使用普通变量从C#中调用lua脚本,但是我无法使用sql-odbc运行脚本,这在ZeroBrane中可以工作,但从C#中无法工作。

以下为C#代码

try
{
  Lua lua = new Lua();
  lua.DoFile("DGT_MSID.lua");

  var x = lua.DoString("return GetData()");
  Console.WriteLine(x.First().ToString());
} catch(NLua.Exceptions.LuaScriptException ex)
{
  Console.WriteLine(ex.Message);
}

DGT_MSID.lua脚本

function GetData()
  require "luasql.odbc"
  env = assert(luasql.odbc())
  print(env)
  con = assert(env:connect("conan", "sa", "p@ssw0rd"))
  print(con)
  cur = assert (con:execute"use testdb")
  cur = assert (con:execute"SELECT MSISD FROM MSID")
  row = cur:fetch({}, "a")

  while row do
    print(string.format("%s",row.MSISD))
    row = cur:fetch (row, "a")
  end

  cur:close()
  con:close()
  env:close()

  return row.MSISD
end

以下是此错误信息:

从文件加载模块 'luasql.odbc' 时发生错误 '...\Debug\luasql\odbc.dll': 找不到指定的模块

点赞
用户1442917
用户1442917

我怀疑 odbc.dll 的其中一个依赖项缺失或没有被加载(可能是 Lua DLL 或与其链接的其他库)。您可以使用 dependency walker 获取依赖项列表,甚至可以在“profile”模式下运行应用程序,这将显示所有已加载的 DLL 以及任何失败的加载及其相关错误。

2019-01-24 15:46:21