This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: undefined reference to cygwin32_conv_to_path


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 <sys/cygwin.h>

You might also want to #include <stdio.h> as well, since you're
using printf.

Thus, a "correct" version would be:

    #include <sys/cygwin.h>
    #include <stdio.h>

    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 <cro@netzero.net>
To: cygwin@sourceware.cygnus.com <cygwin@sourceware.cygnus.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 <windows.h>
>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@sourceware.cygnus.com
>


--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]