From: Brian D. <br...@de...> - 2008-12-02 06:11:44
|
mi...@co... wrote: > The MSDN documentation says that the function is provided by advapi32.dll, which > does appear in the compiler's default list of linked DLLs. > > Any idea why there's still an undefined reference? The failure is because you didn't specify the version of Windows you want to target. If you look at that MSDN page you'll also see that the function is only available on Windows 2k and later, which means you need to define WINVER to 0x0500 or higher before including any of the Windows headers if you want to use that interface, and accept that the resulting executable produced won't run on 9x/ME/NT4 systems. What actually happened was because WINVER wasn't defined sddl.h didn't declare a prototype for the function. If you enable warnings (always a good idea) you will see one about calling a function without a prototype, which is a big clue that something is wrong. But because the Win32 API uses a different calling convention than the C default this also means that linking fails without a proper prototype in scope, even though -ladvapi32 was present. Brian |