[C con Clase] Aprendiendo MySQL + API C
Salvador Pozo Coronado
salvador en conclase.net
Jue Feb 23 11:21:28 CET 2017
Estimada Carolina,
Con fecha jueves, 23 de febrero de 2017, 3:06:59, escribió:
CH>
CH>
CH> Muchísimas gracias Salvador!!! De verdad te agradezco por todo el
CH> esfuerzo que haces por ayudarme :)
CH>
CH> Estaré atenta esperando por los archivos, pero mientras revisaré lo que me comentas del SQLite ;)
Hola:
Esto es lo que he descubierto hasta ahora. Probablemente se convierta
en varios artículos en la página de "Con Clase", espero que pronto.
Opción 1
Instalar un compilador de 64 bits.
a) Descargar el compilador desde TDM-GCC 64 bit
(http://tdm-gcc.tdragon.net/download)
b) Instalar el compilador en el ordenador.
c) Configurar Code::Blocks para usar el nuevo compilador.
d) Crear la librería de enlace estático de 64 bits.
e) Copiar los ficheros de cabecera y las librerías en los lugares
adecuados.
f) Crear programas con acceso a MySQL.
Los pasos a y b son triviales.
Para configurar Code::Blocks seguir las instrucciones de este enlace:
http://forums.codeblocks.org/index.php?topic=21570.0
Para crear el fichero libmysql.a de 64 bits, seguir las instrucciones
de la página de Con Clase:
http://c.conclase.net/mysql/index.php?cap=000b#inicio
La única diferencia es que se deben usar las versiones de los
programas reimp.exe, dlltool.exe y as.exe incluidas en el compilador
de 64 bits.
En este caso no es necesario retocar el fichero .def generado, ya que
no necesita la "decoración" @n para cada función.
Copiar los ficheros de cabecera en la ruta del nuevo compilador, en la
carpeta "include". Usar una carpeta separada llamada "mysql".
Copiar el fichero libmysql.a a la carpeta "lib" del nuevo compilador.
Cuando se cree el proyecto para la aplicación que use MySQL, no
olvidar incluir en "Build options" del proyecto, en la pestaña de
"Linker settings", "Link libraries" las cadenas "mysql" y "ws2_32".
Opción 2
Usar el compilador de 32 bits MinGW
a) Crear la librería de enlace estático de 32 bits.
b) Copiar los ficheros de cabecera y las librerías en los lugares
adecuados.
c) Crear programas con acceso a MySQL.
Aunque parezca más sencillo, esta opción presenta algunos inconvenientes.
Crear la librería, usando las versiones de 32 bits de reimp.exe,
dlltool.exe y as.exe no es tan simple, ya que hay que retocar el
fichero .def generado antes de generar el fichero libmysql.a.
Esto implica editar cada línea del fichero .def para añadir la
"decoración", que consiste en un carácter '@' seguido de un número.
El número corresponde al número de parámetros de la función que
aparece en la línea, multiplicado por cuatro.
Por ejemplo, "mysql_autocommit" se convierte en "mysql_autocommit en 8",
ya que esta función tiene dos parámetros.
Otro ejemplo, "mysql_change_user" se convierte en
mysql_change_user en 16, porque esta función tiene cuatro parámetros.
Para saber cuantos parámetros tiene cada función hay que buscarlas en
el fichero "mysql.h", y contarlos.
El fichero de librería obtenido libmysql.a se copia a la carpeta "lib"
del compilador, que generalmente se encuentra en la carpeta "MinGW"
donde hayamos instalado Code::Blocks.
Los ficheros de cabecera se copian a la carpeta "include", en la misma
ruta, y en una carpeta específica "mysql".
En las opciones del linker del proyecto también hay que incluir las
librerías "mysql" y "ws2_32".
En ambos casos, el fichero "libmysql.dll" debe ser accesible por
nuestra aplicación, por lo tanto, debe estar en una carpeta incluida
en la variable de entorno "PATH", o en la misma carpeta que nuestra
aplicación.
Incluyo varios ficheros adjuntos, para ahorrar trabajo ;-)
include.zip: contiene los ficheros de cabecera de mysql
libmysql_def.zip: fichero .def de 32 bits, decorado.
libmysql_a.zip: fichero de enlace estático de 32 bits.
libmysql_dll.zip: fichero dll
libmysql_lib.zip: fichero de enlace estático versión Microsoft
libmysql_def_64.zip: fichero .def de 64 bits, no necesita decoración.
libmysql_a_64.zip: fichero de enlace estático de 64 bits.
Enlace de descarga:
https://mega.nz/#F!KYhwFaQI
Clave de cifrado:
!E-cgnMdHbbM7dxhMfM6_0w
He probado las dos versiones, de 32 y 64 bits con el motor de bases de
datos que tengo instalado, MaríaDB, y funciona perfectamente. Debería
funcionar con cualquier versión relativamente reciente de MySQL.
Por último, si tu proyecto no necesita cosas como permisos y
privilegios, claves foráneas, procedimientos almacenados,
disparadores, etc. Una buena opción es SQLite.
Hasta pronto.
--
Saludos,
Salvador mailto:salvador en conclase.net
Con Clase: http://www.conclase.net
Blog con Clase: http://blogconclase.wordpress.com
Más información sobre la lista de distribución Cconclase