Mail Archives: cygwin/1999/05/10/18:04:53
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 AT netzero DOT net>
To: cygwin AT sourceware DOT cygnus DOT com <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 <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 AT sourceware DOT cygnus DOT com
>
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
- Raw text -