This is the mail archive of the
cygwin
mailing list for the Cygwin project.
RE: GetProcAddress Problem
- From: "Dave Korn" <dave dot korn at artimi dot com>
- To: <cygwin at cygwin dot com>
- Date: Wed, 23 Jul 2008 16:29:46 +0100
- Subject: RE: GetProcAddress Problem
- References: <18613133.post@talk.nabble.com>
Stefano Facchetti wrote on 23 July 2008 16:17:
> How specify in FAQ 6.16 I try to compile this code:
>
> ...
> HMODULE h = LoadLibrary("cygwin1.dll");
> void (*init)() = GetProcAddress(h, "cygwin_dll_init");
> init();
> ...
>
> The compiler give my the following error:
>
> festivalDll.cc: In function `void festival_init()':
> festivalDll.cc:18: error: invalid conversion from `int (*)()' to `void
> (*)()'
>
> How can I do..?
GetProcAddress returns all function pointers as if they were of type 'int
(*)()', because it has to return a pointer to some kind of function, but it
can't know what actual prototype the function has, so it uses the simplest.
In your program, where you /know/ the actual type of the function, you
need to cast the result returned from GPA:
void (*init)() = (void (*)()) GetProcAddress(h, "cygwin_dll_init");
cheers,
DaveK
--
Can't think of a witty .sigline today....
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/