Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-ID: <09ab01be9b30$dcf40e30$e63d2509@jonpryor.raleigh.ibm.com> From: "Jonathan Pryor" To: Subject: Re: undefined reference to cygwin32_conv_to_path Date: Mon, 10 May 1999 18:02:26 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 4.72.3110.5 X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 The problem is name-mangling -- unless a function is declared as ``extern "C"'', C++ mangles the function. So the function you think is named "cygwin32_conv_to_full_win32_path" is actually "_cygwin32_conv_to_full_win32_path__FPCcPc", as far as the linker is concerned. So the *immediate* fix is to declare it correctly: extern "C" void cygwin32_conv_to_full_win32_path ( const char *path, char *win32_path); The *real* fix is to #include the appropriate header, which declares the funtion prototypes correctly: #include You might also want to #include as well, since you're using printf. Thus, a "correct" version would be: #include #include int main() { static char arg[]="c/help/me"; char fn[40]; cygwin32_conv_to_full_win32_path(arg, fn); printf ("TEST=%s\n",fn); } hth - Jon -----Original Message----- From: Craig_Osterhout To: cygwin AT sourceware DOT cygnus DOT com Date: Monday, May 10, 1999 5:34 PM Subject: B20: undefined reference to cygwin32_conv_to_path >This simple program compiles fine when using the "C" compiler. > Works if it is named "tst.c" and gcc -o tst.exe tst.c. > > >Will not work if it named tst.cpp. >When I try to use the "C++" compiler I get "undefined reference >cygwin32_conv.......". I tried linking to the cygwin library. > >g++ -o tst.exe tst.cpp -lcygwin > >What library do I need to include? >############################################### >#include >void cygwin32_conv_to_full_win32_path(const char *path, char >*win32_path); > >int main() >{ >static char arg[]="c/help/me"; >char fn[40]; > cygwin32_conv_to_full_win32_path(arg, fn); >printf ("TEST=%s\n",fn); >} > >############################################# >Outputs a valid Win32 path when compiled, nice! >Just downloaded the latest version B20. This stuff is very cool. >I need to use the path conversion function in C++ program I would like >to port to windows. >Thanks for any help > >CYGCHECK.out > >Cygnus Win95/NT Configuration Diagnostics >Current System Time: Mon May 10 17:24:53 1999 > >Win95 Ver 4.0 build 67306684 B > >Path: /CYGNUS/CYGWIN~1/H-I586~1/BIN > /ORAWIN95/BIN > /PROGRA~1/MICROS~1/OFFICE > /WINDOWS > /WINDOWS > /WINDOWS/COMMAND > /MKSTOOL/MKSNT > >SysDir: C:\WINDOWS\SYSTEM >WinDir: C:\WINDOWS > >MAKE_MODE = `UNIX' >PWD = `/cygnus/cygwin-b20/src/rsh' > >!C: = `C:\CYGNUS\CYGWIN~1' >BLASTER = `A220 I5 D1 T4' >CLASSPATH = `;C:\Program Files\Exceed.95' >CMDLINE = `bash' >COMSPEC = `C:\COMMAND.COM' >HOSTNAME = `phmbd0aa.us.nortel.com' >HOSTTYPE = `i586' >MACHTYPE = `i586-pc-cygwin32' >MSINPUT = `C:\MSINPUT' >OSTYPE = `cygwin32' >PROMPT = `$p$g' >SHELL = `/bin/sh' >SHLVL = `1' >TEMP = `C:\windows\TEMP' >TERM = `cygwin' >TMP = `c:\windows\TEMP' >WIN32DMIPATH = `C:\DMI\' >WINBOOTDIR = `C:\WINDOWS' >WINDIR = `C:\WINDOWS' >_ = `/CYGNUS/CYGWIN~1/H-I586~1/BIN/cygcheck' > >HKEY_CURRENT_USER\Software\Cygnus Solutions >HKEY_CURRENT_USER\Software\Cygnus Solutions\CYGWIN.DLL setup >HKEY_CURRENT_USER\Software\Cygnus Solutions\CYGWIN.DLL setup\b15.0 >HKEY_CURRENT_USER\Software\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts >HKEY_CURRENT_USER\Software\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\00 > (default) = `C:' > unix = `/' > fbinary = 0x00000000 > fsilent = 0x00000000 >HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cygn us >Cygwin B20 > (default) = `C:\WINDOWS\IsUninst.exe >-fc:\cygnus\cygwin-b20\Uninst.isu' > DisplayName = `Cygwin B20' >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin B20 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin B20\B20.1 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\GNUPro >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\GNUPro\i586-cygwin32 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus >Solutions\GNUPro\i586-cygwin32\i586-cygwin32 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus >Solutions\GNUPro\i586-cygwin32\i586-cygwin32\cygwin-B20.1 > (default) = `c:\cygnus\cygwin-b20' >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL setup >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL setup\b15.0 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\00 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\01 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\02 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\03 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\04 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\05 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\06 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\07 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\08 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\09 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\0A >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\0B >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\0C >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\0D >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\0E >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\0F >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\10 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\11 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\12 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\13 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\14 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\15 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\16 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\17 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\18 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\19 >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\1A >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\1B >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\1C >HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\CYGWIN.DLL >setup\b15.0\mounts\1D > >a:\ fd N/A N/A >c:\ hd FAT 2047Mb 60% CP UN >d:\ hd FAT 2039Mb 62% CP UN >e:\ cd N/A N/A > >C: / native text!=binary > >Found: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\bash.exe >Found: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\cat.exe >Found: C:\MKSTOOL\MKSNT\cat.exe >Warning: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\cat.exe hides >C:\MKSTOOL\MKSNT\cat.exe >Not Found: cpp (good!) >Found: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\find.exe >Found: C:\WINDOWS\COMMAND\find.exe >Warning: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\find.exe hides >C:\WINDOWS\COMMAND\find.exe >Found: C:\MKSTOOL\MKSNT\find.exe >Warning: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\find.exe hides >C:\MKSTOOL\MKSNT\find.exe >Found: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\gcc.exe >Found: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\gdb.exe >Found: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\ld.exe >Found: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\ls.exe >Found: C:\MKSTOOL\MKSNT\ls.exe >Warning: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\ls.exe hides >C:\MKSTOOL\MKSNT\ls.exe >Found: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\make.exe >Found: C:\MKSTOOL\MKSNT\make.exe >Warning: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\make.exe hides >C:\MKSTOOL\MKSNT\make.exe >Found: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\sh.exe >Found: C:\MKSTOOL\MKSNT\sh.exe >Warning: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\sh.exe hides >C:\MKSTOOL\MKSNT\sh.exe >Found: \bin\sh.exe >Warning: C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\sh.exe hides \bin\sh.exe > > 446k 1998/12/04 C:\WINDOWS\SYSTEM\cygwin1.dll - os=4.0 img=1.0 sys=4.0 > "cygwin1.dll" v0.0 ts=1998/12/3 23:39 > 371k 1998/12/01 C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\cygtcl80.dll - os=4.0 >img=1.0 sys=4.0 > "cygtcl80.dll" v0.0 ts=1998/12/1 3:25 > 5k 1998/12/01 C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\cygtclpip80.dll - >os=4.0 img=1.0 sys=4.0 > 10k 1998/12/01 C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\cygtclreg80.dll - >os=4.0 img=1.0 sys=4.0 > "cygtclreg80.dll" v0.0 ts=1998/12/1 3:25 > 600k 1998/12/01 C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\cygtk80.dll - os=4.0 >img=1.0 sys=4.0 > "cygtk80.dll" v0.0 ts=1998/12/1 3:28 > 446k 1998/12/04 C:\CYGNUS\CYGWIN~1\H-I586~1\BIN\cygwin1.dll - os=4.0 >img=1.0 sys=4.0 > "cygwin1.dll" v0.0 ts=1998/12/3 23:39 >Use -h to see help about each section > >-- >Want to unsubscribe from this list? >Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com > -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com