可以在英特尔Atom开发者SDK(C/C++)中使用Python吗?

0 投票
1 回答
848 浏览
提问于 2025-04-15 20:52

我用Python和PyGame做了一个游戏,现在想把这个游戏提交到英特尔的三月开发者挑战赛。不过,这个挑战赛要求使用英特尔的Atom开发者SDK(http://appdeveloper.intel.com/en-us/sdk),而这个SDK只支持C和C++语言。

我对Python和PyGame还很陌生,也没有C或C++的经验。我的问题是,是否有可能通过Python应用程序来实现英特尔的Atom SDK(就像上面的第一个链接所说的那样)?

我稍微了解了一点关于如何将Python嵌入或扩展到C中的知识,但我不太确定该嵌入什么,或者该从哪里开始。我知道在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

1 个回答

1

如果可以的话,尽量不要直接使用纯C语言。可以使用Cython来写一些连接代码。

撰写回答