Re: error LNK2001: unresolved external symbol _ConvertStringSidToSid

From: LiquidJ (replytogroup_at_boo.yah)
Date: 01/06/04


Date: Tue, 6 Jan 2004 09:05:00 -0500

ConvertStringSidToSid() works only on W2k and above. Therefore, you must
define _WIN32_WINNT=0x0500 before the compiler will recognize the definition
of that function. Read carefully the funtion declaration in Sddl.h.

{L}

"Haral Tsitsivas" <haral@unisol.com> wrote in message
news:aCvKb.411$eV2.197@newssvr29.news.prodigy.com...
> I am compiling a C program that uses the ConvertStringSidToSid function
and
> I get the above undefined error at link time, even though I have specified
> the correct include and lib directories in the MS Visual Studio, and I
> include the advapi32.lib first on the list of libraries! Does anyone see
> anything in the dsp file generated by VSC++, pasted below?:
>
> # Microsoft Developer Studio Project File - Name="sqlacct" - Package
> Owner=<4>
> # Microsoft Developer Studio Generated Build File, Format Version 6.00
> # ** DO NOT EDIT **
>
> # TARGTYPE "Win32 (x86) Console Application" 0x0103
>
> CFG=sqlacct - Win32 Debug
> !MESSAGE This is not a valid makefile. To build this project using NMAKE,
> !MESSAGE use the Export Makefile command and run
> !MESSAGE
> !MESSAGE NMAKE /f "sqlacct.mak".
> !MESSAGE
> !MESSAGE You can specify a configuration when running NMAKE
> !MESSAGE by defining the macro CFG on the command line. For example:
> !MESSAGE
> !MESSAGE NMAKE /f "sqlacct.mak" CFG="sqlacct - Win32 Debug"
> !MESSAGE
> !MESSAGE Possible choices for configuration are:
> !MESSAGE
> !MESSAGE "sqlacct - Win32 Release" (based on "Win32 (x86) Console
> Application")
> !MESSAGE "sqlacct - Win32 Debug" (based on "Win32 (x86) Console
> Application")
> !MESSAGE
>
> # Begin Project
> # PROP AllowPerConfigDependencies 0
> # PROP Scc_ProjName ""
> # PROP Scc_LocalPath ""
> CPP=cl.exe
> RSC=rc.exe
>
> !IF "$(CFG)" == "sqlacct - Win32 Release"
>
> # PROP BASE Use_MFC 0
> # PROP BASE Use_Debug_Libraries 0
> # PROP BASE Output_Dir "sqlacct___Win32_Release"
> # PROP BASE Intermediate_Dir "sqlacct___Win32_Release"
> # PROP BASE Target_Dir ""
> # PROP Use_MFC 0
> # PROP Use_Debug_Libraries 0
> # PROP Output_Dir "sqlacct___Win32_Release"
> # PROP Intermediate_Dir "sqlacct___Win32_Release"
> # PROP Ignore_Export_Lib 0
> # PROP Target_Dir ""
> # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D
> "_MBCS" /YX /FD /c
> # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D
> "_MBCS" /YX /FD /c
> # ADD BASE RSC /l 0x409 /d "NDEBUG"
> # ADD RSC /l 0x409 /d "NDEBUG"
> BSC32=bscmake.exe
> # ADD BASE BSC32 /nologo
> # ADD BSC32 /nologo
> LINK32=link.exe
> # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib
> comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
> odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib
> comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
> odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
> # ADD LINK32 advapi32.lib kernel32.lib user32.lib gdi32.lib winspool.lib
> comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
> odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib
> comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
> odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
> /out:"Release/sqlacct.exe"
>
> !ELSEIF "$(CFG)" == "sqlacct - Win32 Debug"
>
> # PROP BASE Use_MFC 0
> # PROP BASE Use_Debug_Libraries 1
> # PROP BASE Output_Dir "sqlacct___Win32_Debug"
> # PROP BASE Intermediate_Dir "sqlacct___Win32_Debug"
> # PROP BASE Target_Dir ""
> # PROP Use_MFC 0
> # PROP Use_Debug_Libraries 1
> # PROP Output_Dir "Debug"
> # PROP Intermediate_Dir "Debug"
> # PROP Ignore_Export_Lib 0
> # PROP Target_Dir ""
> # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
> "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
> # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"
> /D "_MBCS" /YX /FD /GZ /c
> # ADD BASE RSC /l 0x409 /d "_DEBUG"
> # ADD RSC /l 0x409 /d "_DEBUG"
> BSC32=bscmake.exe
> # ADD BASE BSC32 /nologo
> # ADD BSC32 /nologo
> LINK32=link.exe
> # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib
> comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
> odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib
> comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
> odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
> /pdbtype:sept
> # ADD LINK32 advapi32.lib netapi32.lib wsock32.lib kernel32.lib user32.lib
> gdi32.lib winspool.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib
> uuid.lib odbc32.lib odbccp32.lib winspool.lib comdlg32.lib /nologo
> /subsystem:console /incremental:no /map /debug /machine:I386 /pdbtype:sept
> # SUBTRACT LINK32 /pdb:none
>
> !ENDIF
>
> # Begin Target
>
> # Name "sqlacct - Win32 Release"
> # Name "sqlacct - Win32 Debug"
> # Begin Group "Source Files"
>
> # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
> # Begin Source File
>
> SOURCE=.\sqlacct.c
> # End Source File
> # End Group
> # Begin Group "Header Files"
>
> # PROP Default_Filter "h;hpp;hxx;hm;inl"
> # End Group
> # Begin Group "Resource Files"
>
> # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
> # End Group
> # End Target
> # End Project
>
> The link error again:
>
> Linking...
> LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO
> specification
> sqlacct.obj : error LNK2001: unresolved external symbol
> _ConvertStringSidToSid
> Debug/sqlacct.exe : fatal error LNK1120: 1 unresolved externals
> Error executing link.exe.
>
> sqlacct.exe - 2 error(s), 1 warning(s)
>
>



Relevant Pages

  • RFC: XCall calling convention...
    ... compiler, although what I have implemented thus far differs from this spec ... Arguments are passed on the stack in right-to-left order, ... This will attempt to specify Signature strings as applied to data types. ... reference to type ...
    (alt.lang.asm)
  • Re: Some newbye questions
    ... Why have I to specify twice the type of the output of a function? ... By far the easiest way to get such an explicit interface is ... on the particular compiler. ... Unless you have huge arrays of logicals or some such thing, ...
    (comp.lang.fortran)
  • Re: Sweeney presentation "The Next Mainstream Language"
    ... Specify int to be more specific than real. ... possibly helped by programmer annotations or checks. ... test just before the access to make the compiler see that the index is ... he included compiler-checked manual region allocation in Cyclone. ...
    (comp.lang.functional)
  • Bounds checked arrays
    ... As everybody knows, the C language lacks ... When the state of this toggle is ON, the compiler ... Important is to know that the array updates ... We have just to allow him/her to specify what to do ...
    (comp.lang.c)
  • Re: Boolean Buyers Beware ... AIX compiler bug --- PMR 26241,756
    ... But the compiler does have other options for updating byte fields, ... I didn't bring the C++ standard into the discussion, ... C++ doesn't specify anything here, and still one needs multithreading. ...
    (comp.programming.threads)