elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] Importar Funciones de C++ a Modulo de Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Importar Funciones de C++ a Modulo de Python  (Leído 4,306 veces)
Di6it4Lj4ck4L

Desconectado Desconectado

Mensajes: 4


Ver Perfil
[Python] Importar Funciones de C++ a Modulo de Python
« en: 25 Abril 2011, 00:39 am »

Buenas Noches  ;D.

Saludos a todos  ;), he colocado este post, porque tengo un pequeño problema  :huh:, deseo importar unas funciones de C++ que he creado en mi archivo pytiodvc.cpp, el cual utiliza como header tiniodbc.hpp, e utilizado el swig y bueno nada, y despues me dirigí al Boost y bueno no entendí nada, he intendo halar la función desde un archivo python utilizando el siguiente código:

Código
  1. cdef extern from "pytiodbc.cpp":
  2. openconn(char *dsn, char *user, char *pwd)
  3.  
  4. def connect(dsn,user,pwd)
  5. python son de tipo str
  6. if not isinstance(dsn,unicode):
  7. if not isinstance(dsn,str):
  8. raise ValueError("'dsn' requires text input, got %s" % type(text))
  9. udsn=dsn.encode('UTF-8')
  10.  
  11. if not isinstance(user,unicode):
  12. if not isinstance(user,str):
  13. raise ValueError("'user' requires text input, got %s" % type(text))
  14. uuser=user.encode('UTF-8')
  15.  
  16. if not isinstance(pwd,unicode):
  17. if not isinstance(pwd,str):
  18. raise ValueError("'user' requires text input, got %s" % type(text))
  19. upwd=pwd.encode('UTF-8')
  20.  
  21. #Llamamos a la función definida en pytiodbc.cpp
  22. ret=openconn(udsn,uuser,upwd)
  23.  

el archivo pytiodbc.cpp que importo es uno realizado por mi para probar si podía llamar la funcion desde el C++, anexo el código.

Código
  1. #include "tiodbc.hpp"
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. bool openconn(char *dsn, char *user, char *pwd);
  7.  
  8. bool openconn(char *dsn, char *user, char *pwd){
  9.  
  10. // Crea la conexión al ODBC
  11.    tiodbc::connection my_connection(dsn, user, pwd);
  12.  
  13.    // Verifica que la conexión sea éxitosa
  14.    if (my_connection.connected())
  15.        return true;
  16.    else
  17.        return false;
  18.  
  19.    // Se Desconecta
  20.    my_connection.disconnect();
  21. }

lo que deseo es poder llamar esa función desde Python  ;-), por ejemplo con un código así:

Código
  1. import sys
  2. import os
  3. import pytiodbc
  4.  
  5. print "Ejemplo conectar a Base de datos"
  6. resp = pytiodbc.connect ("DSN=Test","Test","Test")
  7. print resp
  8. os.system("pause")
  9.  
  10.  


Quisiera saber si esta manera es correcta ó por obligatoriedad tendría que útilizar el Swig ó Boost  :silbar:, espero su respuesta, y de antemano muchas gracias por la ayuda.


« Última modificación: 25 Abril 2011, 22:15 pm por Di6it4Lj4ck4L » En línea

lnvisible


Desconectado Desconectado

Mensajes: 527



Ver Perfil
Re: [Python] Importar Funciones de C++ a Modulo de Python
« Respuesta #1 en: 2 Mayo 2011, 19:05 pm »

¿Tienes un ejemplo de swig que funciona? Parte de un ejemplo y lo cambias.


En línea

Di6it4Lj4ck4L

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: [Python] Importar Funciones de C++ a Modulo de Python
« Respuesta #2 en: 2 Mayo 2011, 19:08 pm »

Mmm los ejemplo que he encontrado de Swig han sido de C, y bueno la verdad no me sirve porque la clase esta en C++, pero de todas formas intentare a ver si puedo hacer algo, gracias por la respuesta  ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines