thanks you all for the explanations. It was a small project for a friend and nothing critical really. I'm no windows guru, and i'm not so sure i want to be (what with all the hoops and noops) ;)
Now back to Linux defender of... oops.... that's Voltron.... :) On 4/1/06, John Stanton < [EMAIL PROTECTED]> wrote: > > Dennis Jenkins wrote: > > Essien Essien wrote: > > > >>hiya, > >> > >>I have a code snippet that looks like: > >> > >>typedef int (*SQLITE3_CLOSE)(sqlite3*); > >>typedef const char* (*SQLITE3_ERRMSG)(sqlite3*); > >>typedef int (*SQLITE3_OPEN)(const char*, sqlite3**); > >>typedef int (*SQLITE3_EXEC) (sqlite3*, const char*, sqlite3_callback, > void*, > >>char**); > >> > >>HINSTANCE sqlite3_dll; > >> > >>SQLITE3_CLOSE _sqlite3_close; > >>SQLITE3_ERRMSG _sqlite3_errmsg; > >>SQLITE3_OPEN _sqlite3_open; > >>SQLITE3_EXEC _sqlite3_exec; > >> > >>int DB_Init() > >>{ > >> sqlite3_dll = LoadLibrary("sqlite3.dll"); > >> if (sqlite3_dll == NULL) { > >> printf("Cannot find sqlite3.dll. Make sure its in the same > >>directory as the program\n"); > >> return 0; > >> } > >> > >> _sqlite3_open = (SQLITE3_OPEN)GetProcAddress(sqlite3_dll, > >>"sqlite3_open"); > >> if (_sqlite3_open == NULL) { > >> printf("Cannot load function sqlite3_open"); > >> return 0; > >> } > >>} > >> > >>problem is, when ever i call DB_Init(), it always fails with 'Cannot > load > >>function sqlite3_open'. But it successfully passes the LoadLibrary > portion. > >>I'm not a win32 guru, so i'm willing to admit i've made a mistake > somewhere. > >> > >>Any ideas on what i'm doing wrong? > >> > >>I'm using Turbo C++ 4.5 IDE and related tools. (yeah... i know turbo > >>C++ 4.5is realy aged, but could this be the problem?) > >> > >>Essien > >> > >> > > > > > > Since you have the borland compiler product, use the "TDUMP.EXE" tool to > > view the PE header of the sqlite3.dll file. Sometimes the functions > > will be exported with a leading underscore. If your compiler is > > producing 32 bit binaries, and the DLL is also 32 bit, then you might > > try adding a leading underscore to the symbol name when you call > > 'GetProcAddress'. > > > You could also try statically linking Sqlite and bypassing the DLL. >