C++ python 扩展数组大小问题 (C2133)

标签 c++ python arrays

我正在创建一个将游戏 api 暴露给嵌入式 python 解释器的游戏扩展,我在 PyMethodDef 中收到 C2133 数组大小未知错误:

static PyMethodDef pyTTPlayerMethods[] = {
{"Get_Player_Name", pyTTGet_Player_Name, METH_VARARGS, "Returns the nickname of a client."},
{"Get_Player_Type", pyTTGet_Player_Type, METH_VARARGS, "TODO: Returns the player type of a client."},
{"Get_Bandwidth", pyTTGet_Bandwidth, METH_VARARGS, "Returns a player's bandwidth."},
{"Get_Ping", pyTTGet_Ping, METH_VARARGS, "Returns the ping of a client."},
{"Get_Kbits", pyTTGet_Kbits, METH_VARARGS, "Return kbits of a client."},
{"Get_Ip", pyTTGet_Ip_Address, METH_VARARGS, "Returns the IP of a client."},
{"Get_Port", pyTTGet_Ip_Port, METH_VARARGS, "Returns the port of a client."},
{"Get_Team", pyTTGet_Team, METH_VARARGS, "Returns the team ID of a client."},
{"Get_Translated_Team", pyTTGet_Translated_Team, METH_VARARGS, "Returns the team name of a client (GDI, NOD)."},
{"Change_Team", pyTTChange_Player_Team, METH_VARARGS, "Changes the team of a client."},
{"Change_Team2", pyTTChange_Player_Team2, METH_VARARGS, "Changes the team of a client without killing respawning the player."},
{"Get_Kills", pyTTGet_Kills, METH_VARARGS, "Returns the kill count of a client."},
{"Get_Deaths", pyTTGet_Deaths, METH_VARARGS, "Returns the death count of a client."},
{"Get_KD", pyTTGet_KillDeath_Ratio, METH_VARARGS, "Returns the KD ratio of a client."},
{"Get_Rank", pyTTGet_Rank, METH_VARARGS, "Returns the rank of a client."},
{"Set_Rung", pyTTSet_Rung, METH_VARARGS, "Sets the rung of a client."},
{"Set_Ladder_Points", pyTTSet_Ladder_Points, METH_VARARGS, "Returns the rank of a client."},
{"Get_Score", pyTTGet_Score, METH_VARARGS, "Returns the score of a client."},
{"Set_Score", pyTTSet_Score, METH_VARARGS, "Sets the score of a client."},
{"Get_Money", pyTTGet_Money, METH_VARARGS, "Returns the amount of money a client has."},
{"Set_Money", pyTTSet_Money, METH_VARARGS, "Sets the amount of money a client has."},
{"Refill", pyTTGrant_Refill, METH_VARARGS, "Replenishes a client's health and ammo."},
{"Change_Character", pyTTChange_Character, METH_VARARGS, "Changes a client's character."},
{"Toggle_Fly_Mode", pyTTToggle_Fly_Mode, METH_VARARGS, "Toggles a client's flying mode."},
{"Is_Stealth", pyTTIs_Stealth, METH_VARARGS, "Returns a client's stealth status."},
{NULL, NULL, 0, NULL}
};

编译插件时,我得到了这个结果:

1>------ Build started: Project: PythonTT, Configuration: Release SSGM Win32 ------
1>  pyGame.cpp
1>  pyPlayer.cpp
1>  PythonTT.cpp
1>pyGame.cpp(10): error C2248: 'cGameData::MapName' : cannot access protected member declared in class 'cGameData'
1>          g:\c++\ssgm 4.0\scripts\GameData.h(104) : see declaration of 'cGameData::MapName'
1>          g:\c++\ssgm 4.0\scripts\GameData.h(76) : see declaration of 'cGameData'
1>pyGame.cpp(15): error C2039: 'MapNum' : is not a member of 'cGameData'
1>          g:\c++\ssgm 4.0\scripts\GameData.h(76) : see declaration of 'cGameData'
1>g:\c++\ssgm 4.0\pythontt\pyPlayer.h(46): error C2133: 'pyTTPlayerMethods' : unknown size
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

第一个错误是因为我在 PyObject 中选择了错误的调用,但我不知道如何更正最后一个错误 (C2133);有什么建议吗?

最佳答案

您可以尝试使用选项/Ze 进行编译,一个未确定大小的数组被声明为成员。 http://msdn.microsoft.com/en-us/library/0k0w269d%28v=vs.71%29

关于C++ python 扩展数组大小问题 (C2133),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10668910/

相关文章:

python - Julia 中类似 Numpy 的切片

c - 使用 sizeof 分配和初始化矩阵

c++ - boost::format 给出的结果与 round 不同

python - ALS.trainImplicit() 的 alpha 参数可以大于 1 吗?

Python networkx 在使用 draw_networkx_nodes() 时更改节点的颜色

python 回溯

c++ - 指向数组访问的指针出现段错误

c++:不允许定义 dllimport 函数,使用 visual studio 2010 构建

c++ - 如何在 OOP C++ 中使用 Const 类型类?

c++ - 区 block 链 Hyperledger 私钥漏洞