所以我用 Python 和 PyGame 制作了一个游戏。现在我有兴趣将游戏提交给英特尔的三月开发者挑战赛。然而,开发者挑战需要使用英特尔的 Atom 开发者 SDK ( http://appdeveloper.intel.com/en-us/sdk ),它只有用于 C 和 C++ 的 API。
我是 Python 和 PyGame 的新手,没有 C 或 C++ 方面的经验。我的问题是,是否有可能通过/使用/从 Python 应用程序以某种方式实现英特尔的 Atom SDK(如上面的第一个链接所示)?
我已经阅读了一些关于在 C 中嵌入/扩展 Python 的内容,但我不完全确定要嵌入什么或在哪里嵌入。我的意思是,我知道我可以在 C 中做这样的事情:
#include <Python.h>
int
main(int argc, char *argv[])
{
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
Py_Finalize();
return 0;
}
但是对于那些没有在他们的机器上安装这些依赖的人,我该如何处理我对 Python 和 Pygame 的所有依赖呢?通常 Py2Exe 负责压缩所需的依赖项(我已经设法将我的游戏打包成一个 exe/zip),但是在嵌入 C 的上下文中我如何处理这些东西呢?我可以以某种方式与 py2exe 一起工作,还是我需要做一些完全不同的事情才能嵌入到 C 中?
似乎用 C 验证代码扩展 Python 的路线要容易得多,而不是试图将我的整个游戏嵌入到 C 中,但我认为这不是一个选择,“因为提供的库目前仅可用作为 Visual Studio 2008 '.lib'",这意味着应用程序必须使用 Visual Studio 编译...?
非常感谢任何帮助、想法或想法!
您可以在上面的英特尔网站上找到完整的 SDK 开发人员指南,但这里是他们使用 C 语言 API 的“Hello World”:
#include <stdio.h>
#include “adpcore.h”
int main( int argc, char* argv[] )
{
ADP_RET_CODE ret_code;
const ADP_APPLICATIONID myApplicationID = {{
0x12345678,0x11112222,0x33331234,0x567890ab}};
if ((ret_code = ADP_Initialize()) != ADP_SUCCESS ){
printf( “ERROR: exiting” );
exit( -1 );
}
if (( ret_code = ADP_IsAuthorized( myApplicationId )) == ADP_AUTHORIZED )
printf( “Hello World” );
else
printf( “Not authorized to run” );
exit 0;
}
35页SDK开发者指南:http://appdeveloper.intel.com/sites/files/pages/SDK%20Developer%20Guide.pdf