Nesse artigo mostraremos como embutir uma aplicação python no código C. Para isso, usamos o IDE Eclipse 3.4 (GANYMEDE) com o CDT (Plugin do eclipse para trabalhar com a linguagem C/C++) instalado. Também, estamos usando o python versão 2.6.4. O python possui uma ferramenta chamada "python-config" que permite simplificar a compilação e linkagem de código C/C++ junto com os cabeçalhos e bibliotecas C do python.
Para usar o eclipse, crie um projeto em linguagem C, depois, selecione o projeto criado na visão "Project Explorer" e clique com o botão direito e assim aparecerá um menu de opções. Nesse menu selecione "Properties" ou pode-se usar o atalho "ALT+ENTER" apartir do projeto C selecionado.
Veja na figura abaixo a configuração do cabeçalho para compilar o projeto C com os cabeçalhos da API C do python.
Veja na figura abaixo a configuração das bibliotecas para linkar o projeto C com as bibliotecas da API C do python.
Depois disso, crie um arquivo ".c" (no projeto C criado) que está mostrado abaixo:
----------------------------------------------------------------------------------------
/*
============================================================================
Name : PythonEmbeded.c
Author : user
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <python.h>
int main(int argc, char *argv[]) {
Py_Initialize();
PyObject* modname_main = PyString_FromString("__main__");
PyObject* main_module = PyImport_Import(modname_main);
PyObject* globals = PyModule_GetDict(main_module);
PyObject* locals = PyDict_Copy(globals);
PyRun_String("import __main__\nprint dir(__main__)\nprint 'Hello python!!'\n", Py_file_input, globals, locals);
Py_Finalize();
return 0;
}
----------------------------------------------------------------------------------------
Depois disso, compile e ligue ("linkagem") do programa C e execute normalmente.
Para iniciar o interpretador do python, é feita a chamada a função Py_Initialize() e para finalizar a execução do interpretador é chamado a função Py_Finalize(). Entre essas chamadas (de inicializar e finalizar interpretador python) podemos executar o código python através do uso da função PyRun_String, cujo argumento do tipo char * é uma string (estilo C) representando o código python a ser executado.
sábado, 20 de fevereiro de 2010
Assinar:
Postagens (Atom)