如何与来自 Cheerp/js 的外部变量交互?
How do I interface with extern variables from Cheerp/js?
Cheerp is a C++ to js/wasm transpiler. Screeps 是一款编程视频游戏。
如何从我的转译 C++ 代码中读取 Game.time
变量? (在 screeps 中)
#include <cheerp/client.h>
#include <iostream>
using namespace std;
namespace client {
class Game : public Object {
public:
static volatile double time;
};
extern volatile Game &Game;
}
void webMain() {
cout << __TIME__ << ": The current time is: " << client::Game.time << endl;
}
我已经尝试了多种变体:
extern
、volatile
和 static
- 引用和指针
client
和 cheerp
命名空间
- 继承自
Node
/Object
int32_t
vs double
vs float
作为类型
我似乎得到了:
NaN
0
1
- 编译代码中的致命类型处理错误
如何在我的 C++ 代码中正确地连接 Javascript 对象和变量?至少可以说 cheerp 文档非常稀疏...
注意:cheerp 实际上从未生成正确的 Javascript。 Game
对象的处理方式总是存在一些不一致,在很多情况下,它错误地尝试将 Game.d
索引为数组而不是 Game.time
.
在 client
命名空间中声明的 类 不应有成员字段。
要访问外部JS对象属性需要添加以get_
和set_
开头的方法,分别读写属性:
#include <cheerp/client.h>
#include <iostream>
using namespace std;
namespace client {
class Game : public Object {
public:
double get_time();
};
extern Game &Game;
}
void webMain() {
cout << __TIME__ << ": The current time is: " << client::Game.get_time() << endl;
}
另外,这里不需要使用volatile
Cheerp is a C++ to js/wasm transpiler. Screeps 是一款编程视频游戏。
如何从我的转译 C++ 代码中读取 Game.time
变量? (在 screeps 中)
#include <cheerp/client.h>
#include <iostream>
using namespace std;
namespace client {
class Game : public Object {
public:
static volatile double time;
};
extern volatile Game &Game;
}
void webMain() {
cout << __TIME__ << ": The current time is: " << client::Game.time << endl;
}
我已经尝试了多种变体:
extern
、volatile
和static
- 引用和指针
client
和cheerp
命名空间- 继承自
Node
/Object
int32_t
vsdouble
vsfloat
作为类型
我似乎得到了:
NaN
0
1
- 编译代码中的致命类型处理错误
如何在我的 C++ 代码中正确地连接 Javascript 对象和变量?至少可以说 cheerp 文档非常稀疏...
注意:cheerp 实际上从未生成正确的 Javascript。 Game
对象的处理方式总是存在一些不一致,在很多情况下,它错误地尝试将 Game.d
索引为数组而不是 Game.time
.
client
命名空间中声明的 类 不应有成员字段。
要访问外部JS对象属性需要添加以get_
和set_
开头的方法,分别读写属性:
#include <cheerp/client.h>
#include <iostream>
using namespace std;
namespace client {
class Game : public Object {
public:
double get_time();
};
extern Game &Game;
}
void webMain() {
cout << __TIME__ << ": The current time is: " << client::Game.get_time() << endl;
}
另外,这里不需要使用volatile