You don't know what you are doing, let me explain this:
Dark GDK is a wrapper for DirectX9, this is a library made by microsoft, this library is responsible for mainly drawing 3d and 2d scenes/images, and a couple of other things
what you are doing is that you are creating a DOS project, the most common use of this is C++ language practice, as it's very very easy to deal with, you dont have to make the window and handle all the messages and stuff, it's all made for you and you just use printf and scanf to interact with it (there are a couple of more things for visualizations, but whatever..), in a real project (i.e. Win32 project)(this is what GDK uses), you must create the window yourself, and handle all the windows messages yourself, GDK does all that for you, and it initializes all the directX stuff to be ready to function
the entry point of a DOS application is int main ( void ), but for a Win32 project it's int WINAPI WinMain ( HINSTANCE, HINSTANCE, LPSTR, int ), actually, GDK alreayd defined WinMain in it's code as the entry point, and inside that it calls DarkGDK, which is not defined in Dark GDK lib, its just declared in a header file or so, when you create a GDK project from the template, it actually creates a Win32 project with special configurations to fit the GDK needs, but you can notice that when you do so, the entry point is void DarkGDK ( void ), why? well actually it's not, as i said above, it's WinMain, but it's called inside GDK, and it calls DarkGDK which you defined right after initializations
so the DarkGDK library is a Win32 project, and the main.cpp (it's not main.cpp actually, but im saying this to make it clearer) code is more or less like this:
/*
include whatever the engine needs
*/
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmdLine, int cmdShow )
{
DarkGDKInit ( hInstance ); //this is defined in the GDK source
DarkGDK ( ); //this function have no body inside the GDK lib! it's just declared, it's written by you
DarkGDKTerminate ( ); //this is also in GDK code
}
those names are not true, and might not exist, it could look way more different, but the general idea will still look the same
so GDK is a DirectX wrapper, all it does is to simplify the use of DirectX, and it does all the winAPI code for you too, it defines a couple of functions (dbSyncOn dbSyncRate dbMakeObjectSphere etc etc (all GDK functions -starting with db*-)), you just use these, and some std functions if you need, inside the DarkGDK body
this dbPrint("heyy"); might look similar to printf ("heyy"); for you, but it's not! it's very different, printf simply writes on the DOS window, but since GDK uses a winAPI window, it cannot just call this function to draw something, and since it's using DirectX, text is handled in a different way
conclusion: you can't use your own entry point as GDK already defines one, and you can't use GDK without DarkGDK function definition because it's being called inside the GDK's entry point and it has no definition and this will cause a linker error, you CAN'T use GDK with a DOS application, but you can do it if you create a Win32 application, but you will need to configure it manually - somewhat pointless to do if you have the wizards.