Help: running a method from the importing file's method "space"
Rowan
rowanreeve at gmail.com
Mon Apr 30 11:30:28 PDT 2012
Hi all,
Two things first:
1) I am quite new to D and have been using Java at school and a
bit of C++ at home so some things confuse me. Please bear with me.
2) Apologies about the ambiguity of the title, I have no idea how
to ask this in just one line so I'll elaborate here:
What I want to do is create a static library to create a small
wrapper/ to the Win API GUI functions for some basic GUI
components for some projects instead of using some of the already
made and slightly bulky GUI libraries around for D. This is what
gives me a problem explained below.
I need the WinMain(...) entry point to be run so that I can get
my window handle for many of the windows GUI functions so using
main() is out, and I want WinMain to be in the library, so the
entry point of the program is in the library not the importing
file, so if I have my (simplified) files:
--------------
File: MyLib.d:
--------------
module MyLib;
import core.runtime;
import core.sys.windows.windows;
//import std.string;
extern(windows) {
int WinMain(...) {
int success;
//Init code
success = myWin(...);
return success;
}
}
int myWin(...) {
progMain();
}
//Other code...
--------------
File: test.d (i.e. importing file):
--------------
import MyLib;
pragma(lib, "MyLib.lib");
void progMain() {
//User TODO code...
}
So if I want to make any file (in this case "test.d", which can
just import MyLib after I have -lib'd it and use the custom
"entry point" -> "progMain" after "MyLib" has gotten everything
it needs from the WinMain entry point, so that the programmer
(me) can now just import MyLib and start typing their code in
progMain instead of the usual main() without having to alter the
source of MyLib. Basically I want MyLib to be able to call test's
"progMain()", as when I try I get some error along the lines of
progMain() not existing. I hope someone understands me, if you do
and have an answer could you give me a step by step way of doing
this?
Thanks
-Rowan
More information about the Digitalmars-d-learn
mailing list