* I want to use DLL compiled with Cygwin with VC(VS2008).
@ 2011-02-12 2:46 Hosoi
2011-02-12 2:58 ` Christopher Faylor
0 siblings, 1 reply; 4+ messages in thread
From: Hosoi @ 2011-02-12 2:46 UTC (permalink / raw)
To: cygwin
[-- Attachment #1: Type: text/plain, Size: 17387 bytes --]
Hi.
It wants to compile DLL of a certain open source with Cygwin and to use it with VC.
Because the compilation doesn't pass, it should be Cygwin in MSYS.
However, when the one that test DLL was compiled with Cygwin is used with VC, it freezes it with LoadLibrary.
Please teach the method of using DLL compiled with Cygwin in VC(VS2008).
[test.c] DLL source
>===
#include <stdio.h>
#include <windows.h>
#ifdef __cplusplus
extern "C" {
#endif
int WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID
lpReserved )
{
switch (dwReason) {
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}
#ifdef __cplusplus
}
#endif
__declspec(dllexport) int hello( );
int hello()
{
int i;
i++;
return i;
}
>===
[test.def]
>===
EXPORTS
DllMain@12
hello
>===
compile
$gcc -c test.c
$gcc -shared -Wl,-dll,--enable-stdcall-fixup -o test.dll test.o test.def
[main.c] VC source
>===
#include "stdafx.h"
#include "windows.h"
#ifdef __cplusplus
extern "C"{
#endif
typedef void (*TFUNC)(void);
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE hInstDLL;
TFUNC DllFunction;
hInstDLL = LoadLibrary( TEXT( "test.dll" ) ); /* ! FREEZE ! */
if( hInstDLL == NULL )
{
return 0;
}
DllFunction = (TFUNC)GetProcAddress( hInstDLL, "hello" );
DllFunction();
return 0;
}
#ifdef __cplusplus
}
#endif
>===
$cygcheck -s
Cygwin Configuration Diagnostics
Current System Time: Sat Feb 12 11:42:45 2011
Windows 7 Enterprise Ver 6.1 Build 7600
Running under WOW64 on AMD64
Path: C:\cygwin\usr\local\bin
C:\cygwin\bin
C:\cygwin\bin
C:\Windows\system32
C:\Program Files\Common Files\Microsoft Shared\Windows Live
C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live
C:\Program Files (x86)\Network Associates\PGP
C:\Program Files (x86)\Windows Live\Shared
C:\Program Files\Windows Imaging\
C:\Program Files (x86)\QuickTime\QTSystem\
Output from C:\cygwin\bin\id.exe
UID: 1001(Hosoi) GID: 513(None)
513(None) 0(root) 544(Administrators)
545(Users) 1008(HelpLibraryUpdaters) 1000(HomeUsers)
SysDir: C:\Windows\system32
WinDir: C:\Windows
USER = 'Hosoi'
PWD = '/home/Hosi/test'
HOME = '/home/Hosoi'
Use '-r' to scan registry
obcaseinsensitive set to 1
Cygwin installations found in the registry:
System: Key: 1433fba0701a36ab Path: D:\Users\Hosoi\Documents\MailData (ORPHANED)
System: Key: c5e39b7a9d22bafb Path: C:\cygwin
System: Key: ecfa3e1086fe9c61 Path: D:\Users\Takayanagi\Documents\RAD Studio\Projects (ORPHANED)
System: Key: 42ada21a89e4aeec Path: C:\cygwin\home\Hosoi\opendkim-2.3.0.old (ORPHANED)
System: Key: 16b04c8a8b31c6cc Path: C:\cygwin\home\Hosoi\opendkim-2.3.0.old\opendkim (ORPHANED)
System: Key: a8fb4064ab2b92ac Path: C:\Windows (ORPHANED)
System: Key: 5c47c1dca45fa172 Path: D:\Users\Hosoi\Documents\Visual Studio 2008\Projects\PlugInSDK (ORPHANED)
System: Key: 8bc27f67bbf54b16 Path: d:\Users\Hosoi\Documents\Visual Studio 2008\Projects\PlugInSDK\BkPGP (ORPHANED)
System: Key: 8cbedc7cffe1aa17 Path: d:\Users\Hosoi\Documents\Visual Studio 2008\Projects\PlugInSDK\BkPGP (ORPHANED)
System: Key: a9f79d79ef17f1ad Path: C:\Windows (ORPHANED)
System: Key: ef5e464c6d4ee1da Path: d:\Users\Hosoi\Documents\Visual Studio 2008\Projects\PlugInSDK\Test (ORPHANED)
System: Key: b62f536e6722ee46 Path: d:\Users\Hosoi\Documents\Visual Studio 2008\Projects\PlugInSDK\Test2 (ORPHANED)
a: fd N/A N/A
c: hd NTFS 953766Mb 51% CP CS UN PA FC
d: hd NTFS 953866Mb 28% CP CS UN PA FC ボリューム
e: hd NTFS 476937Mb 38% CP CS UN PA FC ボリューム
f: cd N/A N/A
g: fd FAT32 3911Mb 98% CP UN EBOOSTR
h: cd N/A N/A
C:\cygwin / system binary,auto
C:\cygwin\bin /usr/bin system binary,auto
C:\cygwin\lib /usr/lib system binary,auto
cygdrive prefix /cygdrive user binary,auto
Found: C:\cygwin\bin\awk
Found: C:\cygwin\bin\awk
-> C:\cygwin\bin\gawk.exe
Found: C:\cygwin\bin\bash.exe
Found: C:\cygwin\bin\bash.exe
Found: C:\cygwin\bin\cat.exe
Found: C:\cygwin\bin\cat.exe
Found: C:\cygwin\bin\cp.exe
Found: C:\cygwin\bin\cp.exe
Found: C:\cygwin\bin\cpp.exe
Found: C:\cygwin\bin\cpp.exe
Found: C:\MinGW32\bin\cpp.exe
-> C:\cygwin\etc\alternatives\cpp
-> C:\cygwin\bin\cpp-4.exe
Not Found: crontab
Found: C:\cygwin\bin\find.exe
Found: C:\cygwin\bin\find.exe
Found: C:\Windows\system32\find.exe
Found: C:\cygwin\bin\gcc.exe
Found: C:\cygwin\bin\gcc.exe
Found: C:\MinGW32\bin\gcc.exe
-> C:\cygwin\etc\alternatives\gcc
-> C:\cygwin\bin\gcc-4.exe
Found: C:\MinGW32\bin\gdb.exe
Found: C:\cygwin\bin\grep.exe
Found: C:\cygwin\bin\grep.exe
Found: C:\cygwin\bin\kill.exe
Found: C:\cygwin\bin\kill.exe
Found: C:\cygwin\bin\ld.exe
Found: C:\cygwin\bin\ld.exe
Found: C:\MinGW32\bin\ld.exe
Found: C:\cygwin\bin\ls.exe
Found: C:\cygwin\bin\ls.exe
Found: C:\cygwin\bin\make.exe
Found: C:\cygwin\bin\make.exe
Found: C:\cygwin\bin\mv.exe
Found: C:\cygwin\bin\mv.exe
Found: C:\cygwin\bin\patch.exe
Found: C:\cygwin\bin\patch.exe
Found: C:\cygwin\bin\perl.exe
Found: C:\cygwin\bin\perl.exe
Found: C:\cygwin\bin\rm.exe
Found: C:\cygwin\bin\rm.exe
Found: C:\cygwin\bin\sed.exe
Found: C:\cygwin\bin\sed.exe
Not Found: ssh
Found: C:\cygwin\bin\sh.exe
Found: C:\cygwin\bin\sh.exe
Found: C:\cygwin\bin\tar.exe
Found: C:\cygwin\bin\tar.exe
Found: C:\cygwin\bin\test.exe
Found: C:\cygwin\bin\test.exe
Not Found: vi
Not Found: vim
15k 2009/12/27 C:\cygwin\bin\cygattr-1.dll
62k 2011/01/12 C:\cygwin\bin\cygbz2-1.dll
11k 2009/12/23 C:\cygwin\bin\cygcharset-1.dll
108k 2010/01/05 C:\cygwin\bin\cygcloog-0.dll
7k 2003/10/19 C:\cygwin\bin\cygcrypt-0.dll
1147k 2011/02/08 C:\cygwin\bin\cygcrypto-0.9.8.dll
943k 2007/12/17 C:\cygwin\bin\cygdb-4.5.dll
1296k 2007/12/17 C:\cygwin\bin\cygdb_cxx-4.5.dll
118k 2008/05/09 C:\cygwin\bin\cygexpat-1.dll
24k 2010/08/15 C:\cygwin\bin\cygffi-4.dll
43k 2010/01/02 C:\cygwin\bin\cygform-10.dll
40k 2009/03/01 C:\cygwin\bin\cygform-8.dll
43k 2009/11/20 C:\cygwin\bin\cygform-9.dll
47k 2010/01/02 C:\cygwin\bin\cygformw-10.dll
45k 2010/08/15 C:\cygwin\bin\cyggcc_s-1.dll
19k 2009/02/26 C:\cygwin\bin\cyggdbm-4.dll
8k 2009/02/26 C:\cygwin\bin\cyggdbm_compat-4.dll
315k 2009/06/06 C:\cygwin\bin\cyggmp-3.dll
14k 2009/06/06 C:\cygwin\bin\cyggmpxx-4.dll
27k 2010/08/15 C:\cygwin\bin\cyggomp-1.dll
25k 2011/01/26 C:\cygwin\bin\cyghistory7.dll
360k 2010/08/15 C:\cygwin\bin\cygicons-0.dll
982k 2009/12/23 C:\cygwin\bin\cygiconv-2.dll
193k 2010/05/16 C:\cygwin\bin\cygidn-11.dll
31k 2005/11/20 C:\cygwin\bin\cygintl-3.dll
31k 2009/04/03 C:\cygwin\bin\cygintl-8.dll
335k 2009/06/16 C:\cygwin\bin\cygisc-50.dll
273k 2010/07/01 C:\cygwin\bin\cygisc-60.dll
5k 2010/08/31 C:\cygwin\bin\cyglsa.dll
9k 2010/08/31 C:\cygwin\bin\cyglsa64.dll
30k 2010/09/23 C:\cygwin\bin\cygltdl-7.dll
88k 2009/06/16 C:\cygwin\bin\cyglwres-50.dll
65k 2010/07/01 C:\cygwin\bin\cyglwres-60.dll
125k 2010/04/09 C:\cygwin\bin\cyglzma-1.dll
103k 2011/02/03 C:\cygwin\bin\cygmagic-1.dll
25k 2010/01/02 C:\cygwin\bin\cygmenu-10.dll
21k 2009/03/01 C:\cygwin\bin\cygmenu-8.dll
25k 2009/11/20 C:\cygwin\bin\cygmenu-9.dll
25k 2010/01/02 C:\cygwin\bin\cygmenuw-10.dll
24k 2008/10/30 C:\cygwin\bin\cygminires.dll
211k 2009/06/06 C:\cygwin\bin\cygmp-3.dll
64k 2009/11/09 C:\cygwin\bin\cygmpc-1.dll
269k 2009/06/07 C:\cygwin\bin\cygmpfr-1.dll
63k 2010/01/02 C:\cygwin\bin\cygncurses++-10.dll
66k 2009/03/01 C:\cygwin\bin\cygncurses++-8.dll
63k 2009/11/20 C:\cygwin\bin\cygncurses++-9.dll
63k 2010/01/02 C:\cygwin\bin\cygncurses++w-10.dll
195k 2010/01/02 C:\cygwin\bin\cygncurses-10.dll
237k 2009/03/01 C:\cygwin\bin\cygncurses-8.dll
198k 2009/11/20 C:\cygwin\bin\cygncurses-9.dll
244k 2010/01/02 C:\cygwin\bin\cygncursesw-10.dll
13k 2010/01/02 C:\cygwin\bin\cygpanel-10.dll
11k 2009/03/01 C:\cygwin\bin\cygpanel-8.dll
13k 2009/11/20 C:\cygwin\bin\cygpanel-9.dll
13k 2010/01/02 C:\cygwin\bin\cygpanelw-10.dll
224k 2010/06/15 C:\cygwin\bin\cygpcre-0.dll
10k 2010/06/15 C:\cygwin\bin\cygpcreposix-0.dll
1627k 2010/08/29 C:\cygwin\bin\cygperl5_10.dll
22k 2002/06/09 C:\cygwin\bin\cygpopt-0.dll
695k 2009/04/18 C:\cygwin\bin\cygppl-7.dll
2481k 2009/04/18 C:\cygwin\bin\cygppl_c-2.dll
18k 2009/04/18 C:\cygwin\bin\cygpwl-4.dll
164k 2011/01/26 C:\cygwin\bin\cygreadline7.dll
10k 2009/12/14 C:\cygwin\bin\cygsigsegv-2.dll
263k 2011/02/08 C:\cygwin\bin\cygssl-0.9.8.dll
11k 2010/08/15 C:\cygwin\bin\cygssp-0.dll
773k 2010/08/15 C:\cygwin\bin\cygstdc++-6.dll
48k 2010/01/02 C:\cygwin\bin\cygtic-10.dll
48k 2009/11/20 C:\cygwin\bin\cygtic-9.dll
48k 2010/01/02 C:\cygwin\bin\cygticw-10.dll
1128k 2010/05/12 C:\cygwin\bin\cygxml2-2.dll
76k 2010/08/01 C:\cygwin\bin\cygz.dll
2586k 2010/08/31 C:\cygwin\bin\cygwin1.dll
Cygwin DLL version info:
DLL version: 1.7.7
DLL epoch: 19
DLL old termios: 5
DLL malloc env: 28
Cygwin conv: 181
API major: 0
API minor: 230
Shared data: 5
DLL identifier: cygwin1
Mount registry: 3
Cygwin registry name: Cygwin
Program options name: Program Options
Installations name: Installations
Cygdrive default prefix:
Build date:
Shared id: cygwin1S5
15k 2009/12/27 C:\cygwin\bin\cygattr-1.dll
62k 2011/01/12 C:\cygwin\bin\cygbz2-1.dll
11k 2009/12/23 C:\cygwin\bin\cygcharset-1.dll
108k 2010/01/05 C:\cygwin\bin\cygcloog-0.dll
7k 2003/10/19 C:\cygwin\bin\cygcrypt-0.dll
1147k 2011/02/08 C:\cygwin\bin\cygcrypto-0.9.8.dll
943k 2007/12/17 C:\cygwin\bin\cygdb-4.5.dll
1296k 2007/12/17 C:\cygwin\bin\cygdb_cxx-4.5.dll
118k 2008/05/09 C:\cygwin\bin\cygexpat-1.dll
24k 2010/08/15 C:\cygwin\bin\cygffi-4.dll
43k 2010/01/02 C:\cygwin\bin\cygform-10.dll
40k 2009/03/01 C:\cygwin\bin\cygform-8.dll
43k 2009/11/20 C:\cygwin\bin\cygform-9.dll
47k 2010/01/02 C:\cygwin\bin\cygformw-10.dll
45k 2010/08/15 C:\cygwin\bin\cyggcc_s-1.dll
19k 2009/02/26 C:\cygwin\bin\cyggdbm-4.dll
8k 2009/02/26 C:\cygwin\bin\cyggdbm_compat-4.dll
315k 2009/06/06 C:\cygwin\bin\cyggmp-3.dll
14k 2009/06/06 C:\cygwin\bin\cyggmpxx-4.dll
27k 2010/08/15 C:\cygwin\bin\cyggomp-1.dll
25k 2011/01/26 C:\cygwin\bin\cyghistory7.dll
360k 2010/08/15 C:\cygwin\bin\cygicons-0.dll
982k 2009/12/23 C:\cygwin\bin\cygiconv-2.dll
193k 2010/05/16 C:\cygwin\bin\cygidn-11.dll
31k 2005/11/20 C:\cygwin\bin\cygintl-3.dll
31k 2009/04/03 C:\cygwin\bin\cygintl-8.dll
335k 2009/06/16 C:\cygwin\bin\cygisc-50.dll
273k 2010/07/01 C:\cygwin\bin\cygisc-60.dll
5k 2010/08/31 C:\cygwin\bin\cyglsa.dll
9k 2010/08/31 C:\cygwin\bin\cyglsa64.dll
30k 2010/09/23 C:\cygwin\bin\cygltdl-7.dll
88k 2009/06/16 C:\cygwin\bin\cyglwres-50.dll
65k 2010/07/01 C:\cygwin\bin\cyglwres-60.dll
125k 2010/04/09 C:\cygwin\bin\cyglzma-1.dll
103k 2011/02/03 C:\cygwin\bin\cygmagic-1.dll
25k 2010/01/02 C:\cygwin\bin\cygmenu-10.dll
21k 2009/03/01 C:\cygwin\bin\cygmenu-8.dll
25k 2009/11/20 C:\cygwin\bin\cygmenu-9.dll
25k 2010/01/02 C:\cygwin\bin\cygmenuw-10.dll
24k 2008/10/30 C:\cygwin\bin\cygminires.dll
211k 2009/06/06 C:\cygwin\bin\cygmp-3.dll
64k 2009/11/09 C:\cygwin\bin\cygmpc-1.dll
269k 2009/06/07 C:\cygwin\bin\cygmpfr-1.dll
63k 2010/01/02 C:\cygwin\bin\cygncurses++-10.dll
66k 2009/03/01 C:\cygwin\bin\cygncurses++-8.dll
63k 2009/11/20 C:\cygwin\bin\cygncurses++-9.dll
63k 2010/01/02 C:\cygwin\bin\cygncurses++w-10.dll
195k 2010/01/02 C:\cygwin\bin\cygncurses-10.dll
237k 2009/03/01 C:\cygwin\bin\cygncurses-8.dll
198k 2009/11/20 C:\cygwin\bin\cygncurses-9.dll
244k 2010/01/02 C:\cygwin\bin\cygncursesw-10.dll
13k 2010/01/02 C:\cygwin\bin\cygpanel-10.dll
11k 2009/03/01 C:\cygwin\bin\cygpanel-8.dll
13k 2009/11/20 C:\cygwin\bin\cygpanel-9.dll
13k 2010/01/02 C:\cygwin\bin\cygpanelw-10.dll
224k 2010/06/15 C:\cygwin\bin\cygpcre-0.dll
10k 2010/06/15 C:\cygwin\bin\cygpcreposix-0.dll
1627k 2010/08/29 C:\cygwin\bin\cygperl5_10.dll
22k 2002/06/09 C:\cygwin\bin\cygpopt-0.dll
695k 2009/04/18 C:\cygwin\bin\cygppl-7.dll
2481k 2009/04/18 C:\cygwin\bin\cygppl_c-2.dll
18k 2009/04/18 C:\cygwin\bin\cygpwl-4.dll
164k 2011/01/26 C:\cygwin\bin\cygreadline7.dll
10k 2009/12/14 C:\cygwin\bin\cygsigsegv-2.dll
263k 2011/02/08 C:\cygwin\bin\cygssl-0.9.8.dll
11k 2010/08/15 C:\cygwin\bin\cygssp-0.dll
773k 2010/08/15 C:\cygwin\bin\cygstdc++-6.dll
48k 2010/01/02 C:\cygwin\bin\cygtic-10.dll
48k 2009/11/20 C:\cygwin\bin\cygtic-9.dll
48k 2010/01/02 C:\cygwin\bin\cygticw-10.dll
1128k 2010/05/12 C:\cygwin\bin\cygxml2-2.dll
76k 2010/08/01 C:\cygwin\bin\cygz.dll
2586k 2010/08/31 C:\cygwin\bin\cygwin1.dll
Cygwin DLL version info:
DLL version: 1.7.7
DLL epoch: 19
DLL old termios: 5
DLL malloc env: 28
Cygwin conv: 181
API major: 0
API minor: 230
Shared data: 5
DLL identifier: cygwin1
Mount registry: 3
Cygwin registry name: Cygwin
Program options name: Program Options
Installations name: Installations
Cygdrive default prefix:
Build date:
Shared id: cygwin1S5
Can't find the cygrunsrv utility, skipping services check.
Cygwin Package Information
Package Version
_update-info-dir 00944-1
alternatives 1.3.30c-10
autoconf 10-1
autoconf2.1 2.13-10
autoconf2.5 2.68-1
automake 4-10
automake1.10 1.10.3-1
automake1.11 1.11.1-1
automake1.4 1.4p6-10
automake1.5 1.5-10
automake1.6 1.6.3-11
automake1.7 1.7.9-10
automake1.8 1.8.5-10
automake1.9 1.9.6-10
base-cygwin 3.0-1
base-files 3.9-3
bash 4.1.9-2
binutils 2.20.51-2
bzip2 1.0.6-1
coreutils 8.10-1
crypt 1.1-1
cygutils 1.4.4-1
cygwin 1.7.7-1
cygwin-doc 1.7-1
dash 0.5.6.1-2
diffutils 2.9-1
doxygen 1.6.1-2
editrights 1.01-2
file 5.05-1
findutils 4.5.9-2
flexdll 0.25-1
gawk 3.1.8-1
gcc 3.4.4-999
gcc-core 3.4.4-999
gcc-g++ 3.4.4-999
gcc-mingw 20040810-1
gcc-mingw-core 20050522-1
gcc-mingw-g++ 20050522-1
gcc4-core 4.3.4-3
gettext 0.17-11
grep 2.6.3-1
groff 1.20.1-2
gzip 1.3.12-2
ipc-utils 1.0-1
less 436-1
libattr1 2.4.43-1
libbz2_1 1.0.6-1
libcharset1 1.13.1-1
libcloog0 0.15.7-1
libdb4.5 4.5.20.2-2
libexpat1 2.0.1-1
libffi4 4.3.4-3
libgcc1 4.3.4-3
libgdbm4 1.8.3-20
libgmp3 4.3.1-3
libgmpxx4 4.3.1-3
libgomp1 4.3.4-3
libiconv 1.13.1-1
libiconv2 1.13.1-1
libidn11 1.18-1
libintl3 0.14.5-1
libintl8 0.17-11
libisc-devel 9.7.1-1
libisc50 9.6.0_p1-1
libisc60 9.7.1-1
libltdl7 2.4-1
liblwres-devel 9.7.1-1
liblwres50 9.6.0_p1-1
liblwres60 9.7.1-1
liblzma1 4.999.9beta-11
libmpc1 0.8-1
libmpfr1 2.4.1-4
libncurses10 5.7-18
libncurses8 5.5-10
libncurses9 5.7-16
libncursesw10 5.7-18
libopenssl098 0.9.8r-1
libpcre0 8.02-1
libpopt0 1.6.4-4
libppl 0.10.2-1
libpthread-stubs 0.2-1
libreadline7 6.1.2-2
libsigsegv2 2.8-1
libssp0 4.3.4-3
libstdc++6 4.3.4-3
libtool 2.4-1
libxml2 2.7.7-1
libxml2-devel 2.7.7-1
login 1.10-10
m4 1.4.15-1
make 3.81-2
man 1.6f-1
mingw-runtime 3.18-1
mingw64-i686-binutils 2.20.51-2
mingw64-i686-gcc-core 4.5.1-2
mingw64-i686-headers 1.0b_svn3825-2
mingw64-i686-pthreads 20100619-2
mingw64-i686-runtime 1.0b_svn3825-1
minires 1.02-1
nasm 2.08.02-1
openssl 0.9.8r-1
openssl-devel 0.9.8r-1
patch 2.5.8-9
perl 5.10.1-5
rebase 3.0.1-1
run 1.1.13-1
sed 4.2.1-1
tar 1.25-1
terminfo 5.7_20091114-14
terminfo0 5.5_20061104-12
texinfo 4.13-3
tzcode 2010j-1
w32api 3.15-1
wget 1.12-1
which 2.20-2
xz 4.999.9beta-11
zlib 1.2.5-1
zlib-devel 1.2.5-1
zlib0 1.2.5-1
Use -h to see help about each section
--
Y.Hosoi
[-- Attachment #2: Type: text/plain, Size: 137 bytes --]
AntiVir MailGuard ã«ãã£ã¦ã¹ãã£ã³ããã¾ãã v10.0.1.38 AVE 8.2.4.166 VDF 7.11.3.50
[-- Attachment #3: Type: text/plain, Size: 218 bytes --]
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: I want to use DLL compiled with Cygwin with VC(VS2008).
2011-02-12 2:46 I want to use DLL compiled with Cygwin with VC(VS2008) Hosoi
@ 2011-02-12 2:58 ` Christopher Faylor
2011-02-14 4:03 ` Re[2]: " Y.Hosoi
0 siblings, 1 reply; 4+ messages in thread
From: Christopher Faylor @ 2011-02-12 2:58 UTC (permalink / raw)
To: cygwin
On Sat, Feb 12, 2011 at 11:46:47AM +0900, Hosoi wrote:
>It wants to compile DLL of a certain open source with Cygwin and to use
>it with VC. Because the compilation doesn't pass, it should be Cygwin
>in MSYS.
>
>However, when the one that test DLL was compiled with Cygwin is used
>with VC, it freezes it with LoadLibrary.
>
>Please teach the method of using DLL compiled with Cygwin in
>VC(VS2008).
You really can't use Cygwin via LoadLibrary without quite a bit of
extra work.
However: http://www.cygwin.com/faq/faq.programming.html#faq.programming.msvs-mingw
cgf
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re[2]: I want to use DLL compiled with Cygwin with VC(VS2008).
2011-02-12 2:58 ` Christopher Faylor
@ 2011-02-14 4:03 ` Y.Hosoi
2011-02-19 9:40 ` Jason Curl
0 siblings, 1 reply; 4+ messages in thread
From: Y.Hosoi @ 2011-02-14 4:03 UTC (permalink / raw)
To: cygwin
Thank you.
However, it did not move well.
If test.dll is done in LoadLibrary, Access Violation is generated.
Are you still amused something?
[main source code]
#include "stdafx.h"
#include "windows.h"
#ifdef __cplusplus
extern "C"{
#endif
typedef int (*TFUNC)(void);
typedef void (*Tinit)(void);
int _tmain(int argc, _TCHAR* argv[])
{
int i;
HINSTANCE h;
HINSTANCE hInstDLL;
Tinit init;
TFUNC DllFunction;
DWORD ErrNo;
h = LoadLibrary( TEXT( "cygwin1.dll" ) );
init = (Tinit)GetProcAddress( h, "cygwin_dll_init" );
init();
hInstDLL = LoadLibrary( TEXT( "test.dll" ) ); /* !Access Violation! */
if( hInstDLL == NULL )
{
ErrNo = GetLastError();
return 0;
}
DllFunction = (TFUNC)GetProcAddress( hInstDLL, "hello" );
i = DllFunction();
FreeLibrary( hInstDLL );
FreeLibrary( h );
return 0;
}
#ifdef __cplusplus
}
#endif
--
Y.Hosoi <mlist@mail.cuvie.net>
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: I want to use DLL compiled with Cygwin with VC(VS2008).
2011-02-14 4:03 ` Re[2]: " Y.Hosoi
@ 2011-02-19 9:40 ` Jason Curl
0 siblings, 0 replies; 4+ messages in thread
From: Jason Curl @ 2011-02-19 9:40 UTC (permalink / raw)
To: cygwin
On 14/02/2011 05:03, Y.Hosoi wrote:
> Thank you.
>
> However, it did not move well.
>
> If test.dll is done in LoadLibrary, Access Violation is generated.
>
> Are you still amused something?
>
>
> [main source code]
>
> #include "stdafx.h"
> #include "windows.h"
>
> #ifdef __cplusplus
> extern "C"{
> #endif
>
> typedef int (*TFUNC)(void);
>
> typedef void (*Tinit)(void);
>
> int _tmain(int argc, _TCHAR* argv[])
> {
> int i;
>
> HINSTANCE h;
> HINSTANCE hInstDLL;
>
> Tinit init;
> TFUNC DllFunction;
> DWORD ErrNo;
>
> h = LoadLibrary( TEXT( "cygwin1.dll" ) );
> init = (Tinit)GetProcAddress( h, "cygwin_dll_init" );
>
> init();
>
> hInstDLL = LoadLibrary( TEXT( "test.dll" ) ); /* !Access Violation! */
> if( hInstDLL == NULL )
> {
> ErrNo = GetLastError();
> return 0;
> }
> DllFunction = (TFUNC)GetProcAddress( hInstDLL, "hello" );
> i = DllFunction();
>
> FreeLibrary( hInstDLL );
> FreeLibrary( h );
>
> return 0;
> }
>
> #ifdef __cplusplus
> }
> #endif
>
Try the following code. This was pulled from the Cygwin sources. There
is a test case that does exactly this, loads cygwin1.dll dynamically.
You need to make sure you allocate stack. This was compiled with MINGW.
This is part of a larger program, so it might need some adjustments. The
function cygloadCRTStartup() is pretty much from the sources.
Note that the entry point needs to be set with the linker option:
-Wl,-entry -Wl,_cygloadCRTStartup@0
#include <windows.h>
#include <stdio.h>
#include "getopt.h"
#define CYGHELP_SUCCESS EXIT_SUCCESS
#define CYGHELP_ARG_ERROR 1
#define CYGHELP_DLL_NOT_FOUND 100
#define CYGHELP_DLL_NOT_SUPPORTED 101
#define CYGHELP_INTERNAL_ERROR 255
typedef void (__cdecl cdi_t)(void);
typedef void (__cdecl cctfwp_t)(const char *path, char *win32path);
typedef void (__cdecl cctfpp_t)(const char *path, char *posixpath);
int mainCRTStartup ();
int __stdcall cygloadCRTStartup ()
{
char padding[32768];
size_t delta;
int result;
char block[32768];
char *stackbase;
char *_stackbase;
char *_end;
_end = padding + sizeof(padding);
#ifdef __GNUC__
__asm__ (
"movl %%fs:4, %0"
:"=r"(stackbase)
);
#else
__asm {
mov eax, fs:[4];
mov stackbase, eax;
}
#endif
_stackbase = stackbase;
// We've gotten as close as we can to the top of the stack. Even
// subverting the entry point, though, still doesn't get us there-- I'm
// getting 64 bytes in use before the entry point. So we back up the data
// there and restore it when the destructor is called:
if ((_stackbase - _end) != 0) {
delta = (_stackbase - _end);
memcpy (block, _end, delta);
}
result = mainCRTStartup ();
memcpy(_end, block, delta);
return result;
}
int main(int argc, char **argv)
{
HMODULE cygwinDll;
DWORD winres;
cdi_t *cygwin_dll_init;
cctfwp_t *cygwin_conv_to_full_win32_path;
cctfpp_t *cygwin_conv_to_full_posix_path;
const char *dll = "cygwin1.dll";
const char *ppath = NULL;
const char *wpath = NULL;
char module[MAX_PATH];
char buff[MAX_PATH];
int i;
int c;
// Get any options the user provides
opterr = 0;
while ((c = getopt(argc, argv, "c:p:w:")) != -1) {
switch (c) {
case 'c':
dll = optarg;
break;
case 'p':
ppath = optarg;
break;
case 'w':
wpath = optarg;
break;
case '?':
if (optopt == 'c') {
fprintf(stderr, "Option -%c requires the full name for the Cygwin
DLL\n", optopt);
} else if (optopt == 'p') {
fprintf(stderr, "Option -%c requires the Posix path to convert\n",
optopt);
} else if (optopt == 'w') {
fprintf(stderr, "Option -%c requires the Windows path to convert\n",
optopt);
} else {
fprintf(stderr, "Unknown option -%c\n", optopt);
}
return CYGHELP_ARG_ERROR;
default:
fprintf(stderr, "Argument %c given, unknown handler\n", c);
return CYGHELP_INTERNAL_ERROR;
}
}
// Load the library and determine the full path to the library (as
// determined by windows)
cygwinDll = LoadLibrary(dll);
if (!cygwinDll) {
fprintf(stderr, "Couldn't find %s\n", dll);
return CYGHELP_DLL_NOT_FOUND;
}
winres = GetModuleFileName(cygwinDll, module, MAX_PATH);
if (!winres) {
winres = GetLastError();
fprintf(stderr, "GetModuleFilename returned error %d\n", winres);
return CYGHELP_DLL_NOT_SUPPORTED;
}
cygwin_dll_init = (cdi_t *)
GetProcAddress(cygwinDll, "cygwin_dll_init");
if (!cygwin_dll_init) {
fprintf(stderr, "Couldn't find cygwin_dll_init\n");
return CYGHELP_DLL_NOT_SUPPORTED;
}
cygwin_conv_to_full_win32_path = (cctfwp_t *)
GetProcAddress(cygwinDll, "cygwin_conv_to_full_win32_path");
if (!cygwin_conv_to_full_win32_path) {
fprintf(stderr, "Couldn't find cygwin_conv_to_full_win32_path\n");
return CYGHELP_DLL_NOT_SUPPORTED;
}
cygwin_conv_to_full_posix_path = (cctfpp_t *)
GetProcAddress(cygwinDll, "cygwin_conv_to_full_posix_path");
if (!cygwin_conv_to_full_posix_path) {
fprintf(stderr, "Couldn't find cygwin_conv_to_full_posix_path\n");
return CYGHELP_DLL_NOT_SUPPORTED;
}
// Initialise the library. The first line is always the name of the
// module. Then we print the result that the user expects. This allows
// programs to know what library is in use and to easily parse the output
// for their needs
cygwin_dll_init();
printf("%s\n", module);
if (ppath) {
cygwin_conv_to_full_win32_path(ppath, buff);
printf("%s\n", buff);
}
if (wpath) {
cygwin_conv_to_full_posix_path(wpath, buff);
printf("%s\n", buff);
}
// We've finished now, so let's exit
FreeLibrary(cygwinDll);
return CYGHELP_SUCCESS;
}
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-02-19 9:40 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-12 2:46 I want to use DLL compiled with Cygwin with VC(VS2008) Hosoi
2011-02-12 2:58 ` Christopher Faylor
2011-02-14 4:03 ` Re[2]: " Y.Hosoi
2011-02-19 9:40 ` Jason Curl
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).