C/Visual C - me pueden ayudar con la libreria winreg.h?

 
Vista:

me pueden ayudar con la libreria winreg.h?

Publicado por chelo (7 intervenciones) el 25/09/2002 21:07:03
Hola amigos:
He intentado conpilar un programa escrito en c usando la funcion de "w32 RegCreateKeyEx()" residente en la libreria winreg.h pero al intentar compilarlo con el programa rsxntdj de djgpp aparece el siguiente mesaje de error:
C:\DJGPP\chelo>gccw32 test5.c
c:\djgpp\tmp\ccsdFjuG.o(.text+0x69):test4.c: undefined reference to `RegCreateKeyExA'
c:\djgpp\tmp\ccsdFjuG.o(.text+0x93):test4.c: undefined reference to `RegSetValueExA'
c:\djgpp\tmp\ccsdFjuG.o(.text+0xa7):test4.c: undefined reference to `RegCloseKey'
El compilador ha funcionado bien hasta que compilé este codigo, si bien cuando instale rsxntdj y ejecuté el makefile de la carpeta anders me dió el mismo mensaje de error que cuando intento compilar el codigo de la siguiente forma:
C:\DJGPP\chelo>gcc -zwin32 test5.c
gcc.exe: unrecognized option `-zwin32'
In file included from test5.c:1:
C:/DJGPP/RSXNTDJ/include/win32/anders/windows.h:87: excpt.h: No such file or directory (ENOENT)
Les agradeceria cualquier pista para solucionar este problema.
chau..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Problemas de compilación con `RegCreateKeyEx` y `winreg.h` en DJGPP y RSXNTDJ

Publicado por Alejandro (913 intervenciones) el 24/03/2025 17:52:21
El error que estás experimentando al intentar compilar tu programa en C que utiliza las funciones de la API de Windows (`RegCreateKeyExA`, `RegSetValueExA`, `RegCloseKey`) indica que el compilador no puede encontrar las referencias a estas funciones. Esto puede deberse a varias razones, y aquí te doy algunas pistas para solucionar el problema.

1. Asegúrate de incluir las bibliotecas correctas



Cuando trabajas con la API de Windows, necesitas asegurarte de que estás vinculando las bibliotecas necesarias. Para las funciones de registro, debes vincular `advapi32.lib`. En DJGPP, esto se hace utilizando la opción `-l` para especificar la biblioteca.

Asegúrate de compilar tu programa con el siguiente comando:

1
gcc test5.c -o test5.exe -ladvapi32

2. Verifica la instalación de RSXNTDJ



Asegúrate de que RSXNTDJ esté correctamente instalado y que las rutas a las bibliotecas y encabezados de Windows estén configuradas en tu entorno. Esto incluye asegurarte de que el directorio de inclusión de RSXNTDJ esté en tu ruta de búsqueda.

3. Revisar el código fuente



Asegúrate de que tu código fuente esté correctamente configurado para incluir las bibliotecas necesarias. Aquí tienes un ejemplo básico de cómo debería verse tu código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <windows.h>
#include <winreg.h>
#include <stdio.h>
 
int main() {
    HKEY hKey;
    LONG result;
 
    // Crear o abrir una clave del registro
    result = RegCreateKeyExA(HKEY_CURRENT_USER, "Software\\MiAplicacion", 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hKey, NULL);
    if (result == ERROR_SUCCESS) {
        // Establecer un valor en el registro
        const char* value = "NuevoValor";
        RegSetValueExA(hKey, "MiValor", 0, REG_SZ, (const BYTE*)value, strlen(value) + 1);
        RegCloseKey(hKey);
        printf("Valor modificado exitosamente.\n");
    } else {
        printf("Error al crear la clave del registro: %ld\n", result);
    }
 
    return 0;
}

4. Errores de compilación relacionados con `-zwin32`



El error que mencionas sobre `-zwin32` indica que el compilador no reconoce esa opción. Asegúrate de no incluir opciones no válidas en tu comando de compilación. La opción correcta para compilar en modo Windows es simplemente usar `gcc` seguido de los archivos fuente y las bibliotecas necesarias.

5. Verifica la ruta de inclusión



Si el compilador no puede encontrar `excpt.h`, asegúrate de que la ruta de inclusión de RSXNTDJ esté correctamente configurada. Puedes agregar la ruta de inclusión manualmente en tu comando de compilación:

1
gcc -I"C:\DJGPP\RSXNTDJ\include" test5.c -o test5.exe -ladvapi32

6. Ejemplo completo de compilación



Aquí tienes un ejemplo completo de cómo compilar tu programa:

1
gcc -I"C:\DJGPP\RSXNTDJ\include" test5.c -o test5.exe -ladvapi32

Conclusión



Siguiendo estos pasos, deberías poder compilar tu programa que utiliza `winreg.h` y las funciones de la API de Windows sin problemas. Si continúas teniendo errores, verifica cada uno de los pasos y asegúrate de que todas las rutas y configuraciones estén correctas. ¡Buena suerte, Chelo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar