【发布时间】:2020-10-09 18:16:51
【问题描述】:
我想用 Rust 为一个老游戏写一个 AI。该游戏的 AI 是库,在其 Linux 端口中它只是一个 .so 文件导出:
extern "C" void client(int Command, int Player, void *Data);
void *Data 可以是结构体(取决于Command)或这个函数:
typedef int TServerCall(int Command, int Player, int Subject, void *Data);
在 C++ 中,AI 代码根据命令将其转换为已知大小或回调的结构,例如:
typedef int __stdcall TServerCall(int Command, int Player, int Subject, void *Data);
或结构:
// where G is a extern TNewGameData G;
G = *(TNewGameData *) Data;
然后我可以访问G 或其他结构或数组的字段。
问题:
如何将 void * 形式的数据转换为 Rust 中的结构或函数?
【问题讨论】: