任何可以使用c库的高级语言?

时间:2010-06-07 06:42:37

标签: c++ python c

我知道这个问题可能是徒劳的,但这只是出于好奇,而且我仍然是一个新手^ ^无论如何,我在学习它的过程中一直爱着蟒蛇。我的问题显然是速度问题。我想进入独立游戏创作,并且在短期内,2d和pygame将会起作用。
但是我最终想分支到3d区域,而python实际上太慢了,无法制作任何3D和专业。所以我想知道是否曾经有过创建能够导入和使用c库的高级语言的工作?我看了Genie,它似乎能够使用某些库,但我不确定到什么程度。我可以将它用于openGL编程,还是用于c游戏引擎? 我确实知道一些口齿不清并且喜欢它,但是没有很多图书馆可供它使用。这导致了问题:我不能忍受C语法,但C有很多我可能需要的库!和irrlicht这样的游戏引擎。是否有任何语言可以用来代替C周围的C?

非常感谢你们

10 个答案:

答案 0 :(得分:9)

Python可以使用ctypes模块调用动态加载的C库(.so中的.so,Windows中的.dll)中的函数。

还有cython - python的一种变体,可以编译为C并可以直接调用C库。您可以混合使用纯Python和cython编写的模块。

您可能还想查看专为Python编写的numerous 3D game engines或python接口。我最常听到的(但未使用过的)是BlenderPython-Ogre

答案 1 :(得分:3)

Panda3D是一个使用Python作为“游戏逻辑”界面的引擎。你基本上用Python编写所有东西,Panda3D后端(我假设它主要用C或C ++编写)负责渲染。

使用Panda3D的

Check out the gallery of projects。它不会是AAA - 下一个战争级别的图形,但它仍然相当令人印象深刻。

答案 2 :(得分:3)

使用swig,您可以使用各种语言进行C导入:lua,python,php,c#...

查看有关支持的包装器的更多信息here

答案 3 :(得分:1)

Python能够通过ctypes模块使用C库。您必须编写一些Python代码来导入C函数,但如果C API干净简单,您将毫无困难。

答案 4 :(得分:1)

您可能会发现这些有用:

答案 5 :(得分:1)

我一直在使用PyOpenGL,效果很好。如果你想从Python调用C / C ++库,那么Swig就可以了。

答案 6 :(得分:1)

我很惊讶没有人清楚地说过C ++就是你要找的东西。和你一样,我对C语法感到厌恶,但如果你想进入3D游戏,这是避免使用C ++的一个不好的理由。你想潜入3D游戏,还是想坐在游泳池的边缘,哭得太冷了?

我认为你也会发现C ++在OpenGL中表现得非常好,对于许多已经提出的替代方案可能并不正确

答案 7 :(得分:0)

在某种程度上,Cython可能正是您所寻找的。它允许您将Python用作高级语言,但随后将C用于需要优化的部分。

但是,在一天结束时,如果你想做3D,那么学习C或C ++可能就好了。 : - )

答案 8 :(得分:0)

主要的开源游戏引擎(Ogre,Irrlicht等)都有Python包装器。特别是Panda3D应该有很好的绑定。

答案 9 :(得分:0)

如果您想查看.Net平台。您有以下解决方案:

  1. 使用C ++ / CLI将您的C / C ++代码编译成.Net程序集,此部分的运行时间与您的本机C / C ++代码相同。

  2. 使用任何.Net语言(C#,F#,IronPython)使用低级库开发高级内容。对于纯数字运算,C#/ F#通常比原生C代码慢2-4倍,这仍然比Python快得多。对于非数字运算任务,C#/ F#有时可以匹配本机代码的速度。