获取dll中的c++数组数据

光庆 2024-5-12 875

Code AardioLine:53复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
    • import process.gcc;
    • var gcc = process.gcc("/");
    • gcc["main.cpp"] = /*************
    • int result[9][9] = {
    • {9, 0, 0, 8, 0, 0, 0, 0, 0},
    • {0, 0, 0, 0, 0, 0, 5, 0, 0},
    • {0, 0, 0, 0, 0, 0, 0, 0, 0},
    • {0, 2, 0, 0, 1, 0, 0, 0, 3},
    • {0, 1, 0, 0, 0, 0, 0, 6, 0},
    • {0, 0, 0, 4, 0, 0, 0, 7, 0},
    • {7, 0, 8, 6, 0, 0, 0, 0, 0},
    • {0, 0, 0, 0, 3, 0, 1, 0, 0},
    • {4, 0, 0, 0, 0, 0, 2, 0, 0}
    • };
    • extern "C" __declspec(dllexport) int __cdecl Solve()
    • {
    • return int(&result);
    • };
    • *************/
    • //生成 DLL。参数:-shared 生成 DLL,-s 移除调试符号减小体积
    • gcc.exec("main.cpp -o d:\cpp2.dll -shared -s -m32 -O2 -static -lgcc -lstdc++");
    • import console
    • var dll = raw.loadDll("d:\cpp2.dll",,"cdecl")
    • var i = dll.SolveP()
    • // 方法一
    • var s = {
    • int a[9];
    • int b[9];
    • int c[9];
    • int d[9];
    • int e[9];
    • int f[9];
    • int g[9];
    • int h[9];
    • }
    • console.dumpTable(raw.convert(i,s))
    • //方法二
    • var s = {
    • int a[81];
    • }
    • console.dumpTable(raw.convert(i,s).a)
    • //在方法二的基础上进行数组处理
    • var i=0;
    • var t = table.array(9,9,function(){
    • i++;
    • return s["a"][i];
    • })
    • console.dump(t)
    • console.pause();

    最新回复 (0)
    返回