Problemas de inicialización
Cuando el binario no responde tras la ejecución:
- Verifique que su sistema opere con Windows 10+, macOS 12+ o una distribución Linux moderna (glibc ≥ 2.31).
- Asegúrese de que el archivo
ctoy-binse ejecute desde un directorio descomprimido completo — no desde dentro de un ZIP o tarball. - En sistemas Linux/macOS, ejecute
chmod +x ctoy-binantes del primer lanzamiento. - Si persiste el fallo, pruebe iniciar desde terminal para capturar mensajes de error ocultos.
Configuración del entorno
Para compilar desde el código fuente:
git clone https://gitcode.com/gh_mirrors/ct/CToy && cd CToy<br></br>make -f Makefile.unix # Linux/macOS<br></br>build_vs.bat # Windows (Visual Studio)
No se requiere instalación global ni variables de entorno adicionales.
Fallos en compilación
Errores comunes y cómo diagnosticarlos:
- "Undefined reference to 'ctoy_init'": Confirme que su función principal use
void ctoy_main_loop(), nomain(). - Errores de tipo
unknown type name 'ctoy_context': Asegúrese de incluir#include "ctoy.h"al inicio del archivo fuente. - Advertencias sobre funciones osboletas: Reemplace llamadas a
ctoy_draw_circle()por su equivalente actual:ctoy_render_ellipse().
Integración de bibliotecas externas
Para vincular librerías dinámicas sin recompilación manual:
- Coloque los archivos
libaudio.so,libmathext.dylib, etc., en./extlibs/(creado por el usuario). - Declare la dependencia en el encabezado: ```
#define CTOY_USE_EXTLIB_AUDIO#include "ctoy.h"
- Llame directamente a funciones como
audio_play_sample(buffer, len); el cargador dinámico las resuelve en tiempo de ejecución.
Recarga automática y estado persistente
Si los cambios no se reflejan tras guardar:
- Verifique que el editor guarde con codificación UTF-8 sin BOM.
- Ejecute
ctoy_trigger_reload()desde el código para forzar una recarga programática. - Para conservar datos entre recargas, use el gestor de memoria integrado:
static uint8_t *frame_buffer = NULL;<br></br><br></br>void ctoy_begin() {<br></br> if (ctoy_is_first_load()) {<br></br> frame_buffer = calloc(1920 * 1080, sizeof(uint8_t));<br></br> ctoy_bind_persistent(frame_buffer, 1920 * 1080);<br></br> } else {<br></br> frame_buffer = (uint8_t*)ctoy_fetch_persistent();<br></br> }<br></br>}
Renderizado gráfico y rendimiento
Ejemplo mínimo funcionla de renderizado:
void ctoy_main_loop() {<br></br> ctoy_clear_rgba(0.15f, 0.15f, 0.2f, 1.0f);<br></br> ctoy_fill_rect(240, 180, 320, 240, 0.9f, 0.3f, 0.3f, 1.0f);<br></br> ctoy_draw_text("Live C", 10, 20, 0.95f, 0.95f, 0.95f, 1.0f);<br></br>}
Si la ventana se congela:
- Evite bucles
while(1)ofor(;;)dentro dectoy_main_loop(). - Reduzca la frecuencia de actualización con
ctoy_set_target_fps(30). - Desactive efectos avanzados temporalmente usando
#undef CTOY_ENABLE_VSYNCantes de incluirctoy.h.
Ejemplos prácticos incluidos
El repositorio contiene demostraciones funcionales bajo samples/:
minimal.c— Estructura mínima válidaparticles.c— Simulación de partículas con física integradaoscilloscope.c— Visualizador de señales en tiempo realvoxel_engine.c— Motor básico de voxels con raymarching
Documentación técnica
Los recursos clave están disponibles localmente tras clonar el repositorio:
- API completa:
include/ctoy_api.h - Scripts de construcción:
Makefile.unix,build_vs.bat - Guía de migración:
docs/migration_guide.md