|but isn't the definition of a framework that it will be the entry point and later call in to your program ?|
Erm... No, not even close.
I think I understand what you mean.
You want the control flow to work like this:
1. Program starts
2. Control passed to win32_platform.dll
3. win32_platform.dll does some initialization.
4. win32_platform.dll calls a special function in spike.exe
5. spike.exe executes from then on.
Is that right? I would advice against doing that, if possible. Libraries that do this are annoying to use.
But if you still want to do it, here's how it can be done.
First you create a static library that will implement WinMain() for the user's EXE. This WinMain() will simply call into the DLL's entry point. The static library will be part of your framework.
Then the user's EXE should link to the static library. This will let it have an entry point without having to explicitly define one.
That should do it. Now both the DLL and the EXE have entry points, but the EXE looks
like it doesn't.