As indicated in the comments:
extern
is a declaration not a definition. It just means that there's a global variable of that type.
So you have in some header file (e.g. Globals.h)
extern Cmyclass myclass;
Now, if you don't want your linker to fail, you must have in some source file (e.g. Globals.C)
Cmyclass myclass;
Now, the above calls the constructor without parameters. If you only have a constructor with parameters, you can replace that (in the source file) with:
Cmyclass myclass=Cmyclass("Some File");
... but the extern declaration remains the same. Think of it this way, other people don't care about how you created the myclass
global variable, they're just interested in using it. So the fact that it has parameter-constructor or not only matters when the variable is instantiated (and that happens on the *.C, not on the *.h)