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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: [1]
1  Programación / Scripting / [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.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines