I'm trying to write a bare bones screen saver using
SCRNSAVE.LIB. My problem is when I link the code I wrote to
SCRNSAVE.LIB, I get all kinds of "unresolved externals." The
help file I have that explains SCRNSAVE.LIB does not say
anything about the programmer having to declare all the
variables that my linker is choking on, but SCRNSAVE.LIB
seems to think I'm supposed to have them. The really wierd
thing is that these variables that my linker is claiming
are unresolved externals _are_ in fact declared in the
SCRNSAVE.H header file, which is included in my source
module. So I don't see how the linker could claim these
declarations are unresolved since SCRNSAVE.H appears to be
defining them for me. Anyway, here are the error messages
I'm getting from the linker; if you read them I think you'll
see what I mean:
c:\msvc\lib\scrnsave.lib(password.c) : error L2029: '_MyHelpMessage' : unresolved external
c:\msvc\lib\scrnsave.lib(skeleton.c) : error L2029: '_MyHelpMessage' : unresolved external
c:\msvc\lib\scrnsave.lib(skeleton.c) : error L2029: '_szAppName' : unresolved external
c:\msvc\lib\scrnsave.lib(password.c) : error L2029: '_szPassword' : unresolved external
c:\msvc\lib\scrnsave.lib(skeleton.c) : error L2029: '_szIsPassword' : unresolved external
c:\msvc\lib\scrnsave.lib(password.c) : error L2029: '_szBadOldPW' : unresolved external
c:\msvc\lib\scrnsave.lib(password.c) : error L2029: '_szChangePW' : unresolved external
c:\msvc\lib\scrnsave.lib(password.c) : error L2029: '_szIniFile' : unresolved external
c:\msvc\lib\scrnsave.lib(skeleton.c) : error L2029: '_szIniFile' : unresolved external
c:\msvc\lib\scrnsave.lib(skeleton.c) : error L2029: '_fpMessageFilter' : unresolved external
c:\msvc\lib\scrnsave.lib(password.c) : error L2029: '_szNoHelpMemory' : unresolved external
c:\msvc\lib\scrnsave.lib(password.c) : error L2029: '_szHelpFile' : unresolved external
c:\msvc\lib\scrnsave.lib(password.c) : error L2029: '_szScreenSaver' : unresolved external
c:\msvc\lib\scrnsave.lib(skeleton.c) : error L2029: 'SCREENSAVERCONFIGUREDIALOG' : unresolved external
c:\msvc\lib\scrnsave.lib(password.c) : error L2029: '_szName' : unresolved external
c:\msvc\lib\scrnsave.lib(skeleton.c) : error L2029: '_RegisterDialogClasses' : unresolved external
c:\msvc\lib\scrnsave.lib(password.c) : error L2029: '_szDifferentPW' : unresolved external
Just take the first two: "MyHelpMessage" is in fact declared
in SCRNSAVE.H (which as I said above is being included in my
source file) as follows:
extern UINT _cdecl MyHelpMessage;
Yet despite this, the linker claims it is unresolved. Does
anyone know what I'm doing wrong, or alternatively, does
anyone have some example code that successfully implements
are bare bones screen saver?
-mike
P.S. Because the code is so short, I'll include it in
this post:
SCRNSAV.CPP file:
> #include <windows.h>
> #include <scrnsave.h>
>
> extern HINSTANCE hMainInstance;
> extern HWND hMainWindow;
>
> LRESULT WINAPI ScreenSaverProc(HWND hwnd, unsigned msg, UINT wParam, LPARAM lParam)
> {
> return DefScreenSaverProc(hwnd, msg, wParam, lParam);
> }
SCRNSAV.DEF file:
> NAME SCRNSAVER
> DESCRIPTION 'SCRNSAVE:tester'
> STUB 'C:\BORLANDC\BIN\WINSTUB.EXE'
> EXETYPE WINDOWS
> CODE MOVEABLE DISCARDABLE PRELOAD
> DATA MOVEABLE MULTIPLE PRELOAD
>
> HEAPSIZE 1024
> STACKSIZE 4096
>
> EXPORTS
> ScreenSaverProc @1
SCRNSAV.RC file:
> #define idsAppName 1
>
> STRINGTABLE
> BEGIN
> idsAppName, "Screen Saver.Tester"
> END
HINSTANCE _cdecl hMainInstance;
HWND _cdecl hMainWindow;
char _cdecl szName[TITLEBARNAMELEN];
char _cdecl szIsPassword[22];
char _cdecl szIniFile[MAXFILELEN];
char _cdecl szScreenSaver[22];
char _cdecl szPassword[16];
char _cdecl szDifferentPW[BUFFLEN];
char _cdecl szChangePW[30];
char _cdecl szBadOldPW[BUFFLEN];
char _cdecl szHelpFile[MAXFILELEN];
char _cdecl szNoHelpMemory[BUFFLEN];
UINT _cdecl MyHelpMessage;
HOOKPROC _cdecl fpMessageFilter;
"extern" means that the variable will actually be declared somewhere else, which
in this case is the .C (or .CPP) file.
In article <4j72m7$6...@news.us.net>, Mike Goelzer <mgoe...@us.net> wrote:
:>(I'll preface my question by saying this: I know that one
:>
========================================================================.
| Abu A. Wawda | wa...@scf.usc.edu | http://www.netvoyage.net/~abu/ |
| -----------------------------------------------------------------------|
| EMPLOYERS: I am currently looking for a summer internship (in Computer |
| Science). Please see my web page for a copy of my resume or email me! |
`========================================================================'
The answer in this case, or at least a possible one, is to make sure you included
the scrnsav.lib file in your project.
-----------------------------
Reality Meter: [\.....], thought so
-----------------------------