5

我正在创建一个游戏扩展,将游戏 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);有什么建议么?

4

1 回答 1

1

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

于 2012-08-11T18:39:00.680 回答