Noob ImportC questions

John C. example at example.com
Wed Feb 26 17:00:48 UTC 2025


Hello everyone. Recently I get interested in some GUI-related 
stuff and I want to use Raylib in my project. I know about 
raylib-d, dray, etc. bindings, but I would like to see what can 
ImportC do for me in this situation.
I have following project hierarchy:
```
project/
   src/
     main.d
     raylib.c
   lib/
     raylib/
       include/
         raylib.h
       libraylib.a
```
main.d contents:
```
import raylib;

void main() {
     InitWindow(800, 600, "Hello, Raylib!");
     SetTargetFPS(60);
     while (!WindowShouldClose()) {
         BeginDrawing();
             ClearBackground(Color(245, 245, 245, 255));
             DrawText("Hello, Raylib!", 400, 300, 28, Color(200, 
200, 200, 255));
         EndDrawing();
     }
     CloseWindow();
}
```
raylib.c contents:
```
#include "../lib/raylib/include/raylib.h"
```
Raylib header file and library files were downloaded from Raylib 
GitHub releases page.
Here some questions about it and object file layout arised (it's 
important to mention that I'm newbie in D and programming at all):

1. Why both "ldmd2 main.d raylib.c -L../lib/raylib/libraylib.a" 
and "ldmd2 main.d -L../lib/raylib/libraylib.a" produce working 
executable? main.d code in second example does not have access to 
header inclusions, or this data is already available in library 
file?
2. Why main.d version with "Color(...)" replaced by "RAYWHITE" or 
"LIGHTGREY" (defined in header) will not compile with "undefined 
identifier" error?

Modified main.d:
```
import raylib;

void main() {
     InitWindow(800, 600, "Hello, Raylib!");
     SetTargetFPS(60);
     while (!WindowShouldClose()) {
         BeginDrawing();
             ClearBackground(RAYWHITE);
             DrawText("Hello, Raylib!", 400, 300, 28, LIGHTGRAY);
         EndDrawing();
     }
     CloseWindow();
}
```
Error (with both commands above, same result):
```
main.d(8): Error: undefined identifier `RAYWHITE`
main.d(9): Error: undefined identifier `LIGHTGRAY`
```


More information about the Digitalmars-d-learn mailing list