I tried to download/compile/install win32-dir, but I couldn''t get it to go. Over a private email Daniel Berger had me... "Curious. What platform are you on exactly? Try modifying the extconf.rb file. Add ''have_library("SHFolder")'' above ''have_library("shell32")''. If that doesn''t work, try uncommenting the other two ''have_library'' calls." I did those and the below is the output I get from running ''ruby extconf.rb'' is... C:\unzipped\WIN32-~2.0\WIN32-~1.0>ruby extconf.rb checking for main() in shlwapi.lib... yes checking for main() in SHFolder.lib... no checking for main() in shell32.lib... yes checking for main() in comctl32.lib... yes checking for SHGetFolderPath()... no creating Makefile I then ran a: C:\WINNT\system32>dumpbin /exports shell32.dll | grep SH (yes i have unix tools) and found that I don''t have SHGetFolderPath. I have SHGetFolderPathA and SHGetFolderPathW. The actual compiles I got are listed below this email. I am running... Windows 2000 Service Pack 4 Visual Studio 6 I get this problem at my home and at my office. Could this be easily remedied by checking to see if SHGetFolderPath is an invalid pointer, and if so checking for SHGetFolderPathA or SHGetFolderPathW ? Thanks, Zach ---- ERROR BELOW ---- C:\unzipped\WIN32-~2.0\WIN32-~1.0>nmake Microsoft (R) Program Maintenance Utility Version 6.00.9782.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. cl -nologo -MD -Zi -O2b2xg- -G6 -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -I. -I./.. -I./../missing -D_WIN32_WINN T=0x0500 -D_WIN32_IE=0x0500 -c -Tcdir.c dir.c dir.c(36) : error C2065: ''CSIDL_ADMINTOOLS'' : undeclared identifier dir.c(40) : error C2065: ''CSIDL_CDBURN_AREA'' : undeclared identifier dir.c(41) : error C2065: ''CSIDL_COMMON_ADMINTOOLS'' : undeclared identifier dir.c(43) : error C2065: ''CSIDL_COMMON_APPDATA'' : undeclared identifier dir.c(48) : error C2065: ''CSIDL_COMMON_DOCUMENTS'' : undeclared identifier dir.c(50) : error C2065: ''CSIDL_COMMON_MUSIC'' : undeclared identifier dir.c(51) : error C2065: ''CSIDL_COMMON_PICTURES'' : undeclared identifier dir.c(55) : error C2065: ''CSIDL_COMMON_TEMPLATES'' : undeclared identifier dir.c(56) : error C2065: ''CSIDL_COMMON_VIDEO'' : undeclared identifier dir.c(67) : error C2065: ''CSIDL_LOCAL_APPDATA'' : undeclared identifier dir.c(68) : error C2065: ''CSIDL_MYDOCUMENTS'' : undeclared identifier dir.c(69) : error C2065: ''CSIDL_MYMUSIC'' : undeclared identifier dir.c(70) : error C2065: ''CSIDL_MYPICTURES'' : undeclared identifier dir.c(71) : error C2065: ''CSIDL_MYVIDEO'' : undeclared identifier dir.c(77) : error C2065: ''CSIDL_PROFILE'' : undeclared identifier dir.c(81) : error C2065: ''CSIDL_PROGRAM_FILES'' : undeclared identifier dir.c(84) : error C2065: ''CSIDL_PROGRAM_FILES_COMMON'' : undeclared identifier dir.c(91) : error C2065: ''CSIDL_SYSTEM'' : undeclared identifier dir.c(93) : error C2065: ''CSIDL_WINDOWS'' : undeclared identifier NMAKE : fatal error U1077: ''cl'' : return code ''0x2'' Stop.
Hi Zach, Just a quick comment...> C:\WINNT\system32>>dumpbin /exports shell32.dll | grep SH > (yes i have unix tools)> and found that I don''t have SHGetFolderPath. I have SHGetFolderPathA and > SHGetFolderPathW.I don''t know anything about the specific problem you''re encountering, but the results you got above are exactly what I''d expect. Almost all Win32 API calls that do anything with strings come in two flavors, xyzA (which deals with 8 bit ANSI strings) and xyzW (which deals with 16 bit Unicode strings). There is not actually an API call named just "xyz". In C/C++ there are preprocessor defines that translate xyz to xyzA or to xyzW, depending on whether the code is being compiled for Unicode. Hope this helps, Wayne Sunday, May 1, 2005, 12:39:19 PM, you wrote:> I tried to download/compile/install win32-dir, but I couldn''t get it to > go. Over a private email Daniel Berger had me...> "Curious. What platform are you on exactly? Try > modifying the extconf.rb file. Add > ''have_library("SHFolder")'' above > ''have_library("shell32")''. If that doesn''t work, try > uncommenting the other two ''have_library'' calls."> I did those and the below is the output I get from running ''ruby > extconf.rb'' is...> C:\unzipped\WIN32-~2.0\WIN32-~1.0>ruby extconf.rb > checking for main() in shlwapi.lib... yes > checking for main() in SHFolder.lib... no > checking for main() in shell32.lib... yes > checking for main() in comctl32.lib... yes > checking for SHGetFolderPath()... no > creating Makefile> I then ran a:C:\WINNT\system32>>dumpbin /exports shell32.dll | grep SH> (yes i have unix tools)> and found that I don''t have SHGetFolderPath. I have SHGetFolderPathA and > SHGetFolderPathW.> The actual compiles I got are listed below this email. I am running... > Windows 2000 Service Pack 4 > Visual Studio 6> I get this problem at my home and at my office. Could this be easily > remedied by checking to see if SHGetFolderPath is an invalid pointer, > and if so checking for SHGetFolderPathA or SHGetFolderPathW ? Thanks,> Zach> ---- ERROR BELOW ----> C:\unzipped\WIN32-~2.0\WIN32-~1.0>nmake> Microsoft (R) Program Maintenance Utility Version 6.00.9782.0 > Copyright (C) Microsoft Corp 1988-1998. All rights reserved.> cl -nologo -MD -Zi -O2b2xg- -G6 -I. > -Ic:/ruby/lib/ruby/1.8/i386-mswin32 > -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -I. -I. -I./.. -I./../missing > -D_WIN32_WINN > T=0x0500 -D_WIN32_IE=0x0500 -c -Tcdir.c > dir.c > dir.c(36) : error C2065: ''CSIDL_ADMINTOOLS'' : undeclared identifier > dir.c(40) : error C2065: ''CSIDL_CDBURN_AREA'' : undeclared identifier > dir.c(41) : error C2065: ''CSIDL_COMMON_ADMINTOOLS'' : undeclared identifier > dir.c(43) : error C2065: ''CSIDL_COMMON_APPDATA'' : undeclared identifier > dir.c(48) : error C2065: ''CSIDL_COMMON_DOCUMENTS'' : undeclared identifier > dir.c(50) : error C2065: ''CSIDL_COMMON_MUSIC'' : undeclared identifier > dir.c(51) : error C2065: ''CSIDL_COMMON_PICTURES'' : undeclared identifier > dir.c(55) : error C2065: ''CSIDL_COMMON_TEMPLATES'' : undeclared identifier > dir.c(56) : error C2065: ''CSIDL_COMMON_VIDEO'' : undeclared identifier > dir.c(67) : error C2065: ''CSIDL_LOCAL_APPDATA'' : undeclared identifier > dir.c(68) : error C2065: ''CSIDL_MYDOCUMENTS'' : undeclared identifier > dir.c(69) : error C2065: ''CSIDL_MYMUSIC'' : undeclared identifier > dir.c(70) : error C2065: ''CSIDL_MYPICTURES'' : undeclared identifier > dir.c(71) : error C2065: ''CSIDL_MYVIDEO'' : undeclared identifier > dir.c(77) : error C2065: ''CSIDL_PROFILE'' : undeclared identifier > dir.c(81) : error C2065: ''CSIDL_PROGRAM_FILES'' : undeclared identifier > dir.c(84) : error C2065: ''CSIDL_PROGRAM_FILES_COMMON'' : undeclared > identifier > dir.c(91) : error C2065: ''CSIDL_SYSTEM'' : undeclared identifier > dir.c(93) : error C2065: ''CSIDL_WINDOWS'' : undeclared identifier > NMAKE : fatal error U1077: ''cl'' : return code ''0x2'' > Stop. > _______________________________________________ > win32utils-devel mailing list > win32utils-devel@rubyforge.org > http://rubyforge.org/mailman/listinfo/win32utils-devel
> -----Original Message----- > From: win32utils-devel-bounces@rubyforge.org > [mailto:win32utils-devel-bounces@rubyforge.org] On Behalf Of > Wayne Vucenic > Sent: Sunday, May 01, 2005 4:25 PM > To: Zach Dennis > Cc: Development and ideas for win32utils projects > Subject: Re: [Win32utils-devel] win32-dir 0.1.0 compile problems > > > Hi Zach, > > Just a quick comment... > > > C:\WINNT\system32>>dumpbin /exports shell32.dll | grep SH > (yes i have > > unix tools) > > > and found that I don''t have SHGetFolderPath. I have > SHGetFolderPathA > > and SHGetFolderPathW. > > I don''t know anything about the specific problem you''re > encountering, but the results you got above are exactly what > I''d expect. Almost all Win32 API calls that do anything with > strings come in two flavors, xyzA (which deals with 8 bit > ANSI strings) and xyzW (which deals with 16 bit Unicode > strings). There is not actually an API call named just > "xyz". In C/C++ there are preprocessor defines that translate > xyz to xyzA or to xyzW, depending on whether the code is > being compiled for Unicode. > > Hope this helps, > > WayneThis isn''t the issue. If SHGetFolderPath isn''t found, then SHGetSpecialFolderPath is used instead. The real issue simply seems to be that some of these constants just aren''t defined in the VC++ 6 header files. I couldn''t tell this from the documentation, which only specifies a minimum OS, not a minimum version of VC++. I''ve hit this before back when I was using Win2k with VC++ 6 myself. There are three solutions. Two involve wrapping these values in #ifdef statements. The question is whether or not to simply leave them undefined, or to define them manually based on the values in the VC++ 7 header files if not found, which I could copy/paste. The third solution is for Zach to upgrade to a newer version of VC++. :) In any case I should have a new release out this week at some point. Zach (or anyone with VC++ 6), I''ll need your help to confirm that it works. Regards, Dan
Berger, Daniel wrote:>>-----Original Message----- >>From: win32utils-devel-bounces@rubyforge.org >>[mailto:win32utils-devel-bounces@rubyforge.org] On Behalf Of >>Wayne Vucenic >>Sent: Sunday, May 01, 2005 4:25 PM >>To: Zach Dennis >>Cc: Development and ideas for win32utils projects >>Subject: Re: [Win32utils-devel] win32-dir 0.1.0 compile problems >> >> >>Hi Zach, >> >>Just a quick comment... >> >> >>>C:\WINNT\system32>>dumpbin /exports shell32.dll | grep SH >> >>(yes i have >> >>>unix tools) >> >>>and found that I don''t have SHGetFolderPath. I have >> >>SHGetFolderPathA >> >>>and SHGetFolderPathW. >> >>I don''t know anything about the specific problem you''re >>encountering, but the results you got above are exactly what >>I''d expect. Almost all Win32 API calls that do anything with >>strings come in two flavors, xyzA (which deals with 8 bit >>ANSI strings) and xyzW (which deals with 16 bit Unicode >>strings). There is not actually an API call named just >>"xyz". In C/C++ there are preprocessor defines that translate >>xyz to xyzA or to xyzW, depending on whether the code is >>being compiled for Unicode. >> >>Hope this helps, >> >>Wayne > > > This isn''t the issue. If SHGetFolderPath isn''t found, then > SHGetSpecialFolderPath is used instead. > > The real issue simply seems to be that some of these constants just > aren''t defined in the VC++ 6 header files. I couldn''t tell this from > the documentation, which only specifies a minimum OS, not a minimum > version of VC++. I''ve hit this before back when I was using Win2k with > VC++ 6 myself. > > There are three solutions. Two involve wrapping these values in #ifdef > statements. The question is whether or not to simply leave them > undefined, or to define them manually based on the values in the VC++ 7 > header files if not found, which I could copy/paste. The third solution > is for Zach to upgrade to a newer version of VC++. :)I have the latest .NET Studio install now at work (as of this morning), but for my home, I can guarantee I won''t be purchasing it unless it is company funded. =)> In any case I should have a new release out this week at some point. > Zach (or anyone with VC++ 6), I''ll need your help to confirm that it > works.I''d be glad to help! Zach