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

光庆 6月前 499

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)
返回