[CMake] CHECK_FUNCTION_EXISTS(UuidCreate HAVE_UUIDCREATE)

Mathieu Malaterre mathieu.malaterre at gmail.com
Mon May 5 15:21:30 EDT 2008


On Mon, May 5, 2008 at 9:10 PM, Mathieu Malaterre
<mathieu.malaterre at gmail.com> wrote:
>
> On Mon, May 5, 2008 at 8:59 PM, Bill Hoffman <bill.hoffman at kitware.com> wrote:
>  > Mathieu Malaterre wrote:
>  >
>  >
>  > >
>  > > -> that's exactly what is driving me nuts, CheckFunctionExists.c is a
>  > > 5 line c code, it forward declare the function but does not include
>  > > *anything*.
>  > >
>  >  That is what concerns me, it does not include anything.  It maybe required
>  > to include something to find the symbol...
>  >
>  >
>  > >
>  > > And I can confirm that compilation by hand works:
>  > >
>  > >  /usr/local/bin/gcc.exe  -DCHECK_FUNCTION_EXISTS=UuidCreate   -o foo.o
>  > >  -c /usr/share/cmake-2.4.8/Modules/CheckFunctionExists.c
>  > >
>  > > ...
>  > >
>  > >
>  >  Use debug-trycompile.
>  >
>  >  Then cd into the directory and run make, what is different than what works?
>
>  no :(
>
>  If that help here is the nm dump of rpcrt4:
>
>  $ nm /lib/w32api/librpcrt4.a | grep UuidCre
>  00000000 T _UuidCreateSequential at 4
>  00000000 I __imp__UuidCreateSequential at 4
>  00000000 T _UuidCreateNil at 4
>  00000000 I __imp__UuidCreateNil at 4
>  00000000 T _UuidCreate at 4
>  00000000 I __imp__UuidCreate at 4
>  00000000 T _I_UuidCreate at 4
>  00000000 I __imp__I_UuidCreate at 4
>
>  So it's definitely there.
>
>  And grep in /usr/include/w32api, I get:
>
>  rpcdce.h:RPC_STATUS RPC_ENTRY UuidCreate(UUID*);
>  rpcdce.h:RPC_STATUS RPC_ENTRY UuidCreateNil(UUID*);
>  rpcdce.h:RPC_STATUS RPC_ENTRY UuidCreateSequential(UUID*);
>  rpcdce2.h:RPC_STATUS RPC_ENTRY UuidCreateNil(UUID*);
>  rpcdcep.h:long __stdcall I_UuidCreate(GUID*);
>
>  ...
>
>
>  --
>  Mathieu
>

Is there a difference in between:

__attribute__((__stdcall__))

and

 __attribute__((__cdecl__))


Thanks,
-- 
Mathieu


More information about the CMake mailing list