你知道,我们可以在 Python 或 Perl 编程语言上绑定每个 C 库。一个很好的例子是PyQt
;PyQt
从 绑定Qt
。
我的问题是:我可以做上述相反的事情吗?我的意思是:假设我有一个 Python 或 Perl 库,我想将它转换为 C 库……可以吗?但是,您可以考虑将 Web 程序转换为共享库或一组函数。
我的目标: 我想改进一组安全功能。
你知道,我们可以在 Python 或 Perl 编程语言上绑定每个 C 库。一个很好的例子是PyQt
;PyQt
从 绑定Qt
。
我的问题是:我可以做上述相反的事情吗?我的意思是:假设我有一个 Python 或 Perl 库,我想将它转换为 C 库……可以吗?但是,您可以考虑将 Web 程序转换为共享库或一组函数。
我的目标: 我想改进一组安全功能。
是的你可以。艺术术语是“嵌入”,如“嵌入式 Python”或“嵌入 Python 解释器”。Python 在这里有一个关于它的文档:https ://docs.python.org/2/extending/embedding.html - 一般的想法是你必须使用(至少一小部分)Python C API 在一个C 或 C++ 应用程序。
一旦你意识到你可以在 C 中嵌入一种脚本语言,并且脚本语言可以调用 C,你就会意识到你也可以在另一种脚本语言中嵌入一种脚本语言,使用 C 作为它们之间的桥梁。例如RubyLuaBridge:https ://bitbucket.org/neomantra/rubyluabridge
许多商业应用程序在 C 或 C++ 主机程序中嵌入了脚本语言解释器。一个很好的、有据可查的例子是 Adobe Lightroom,它大约是一半 C++ 和一半 Lua。您可以从这里的第 xi 页开始从马口中了解这一点:http ://www.lua.org/gems/front.pdf
是的,至少对于 python:将 Python 程序转换为 C/C++ 代码?.
对于 Perl: http: //perldoc.perl.org/5.8.9/perlcompile.html。
[编辑] 根据评论,我将展开。首先,问题“我可以将 Python 翻译成 C 吗?” 已经在SO上回答了。请参阅链接。
其次,Perl 实际上是一种解释性语言(就像 Python 一样),并且能够获取中间代码并将其翻译成完整的 C 语言,以用于本机可执行文件。这是使用“B”模块和其他配套模块完成的,例如 B::C。还有一个独立的程序“perlcc”可以做到这一点。[/编辑]