From: Marcel R. <ma...@ma...> - 2003-06-23 11:59:58
|
Hi, probably it's a stupid question (but i don't know much about Win). I want to compile & link a C program with cpp tasks (cvs from Feb 12, 2003), the tasks runs fine on Linux and Solaris, but on Windows it compiles only and does not link because it can't find xmlBlasterClientC.dll. But xmlBlasterClientC.dll exists and looks nice: 06/23/2003 12:14 PM 73,728 xmlBlasterClientC.dll 06/23/2003 12:14 PM 175,104 xmlBlasterClientC.pdb In verbose mode i can see the the xmlBlasterClientC.dll is not on the linking command line of the executable: [cc] link /NOLOGO /DEBUG /INCREMENTAL:NO /OUT:LogRedirect.exe '"..\..\..\..\..\..\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformS DK\Lib\WS2_32.Lib"' ..\..\..\..\src\c\socket\pthreadVC.lib ..\..\..\..\build\obj\LogRedirect.obj I tried this with no success: <linker name="msvc" if="use-msvc"> <libset casesensitive="false" dir="${lib.dir}" libs="xmlBlasterClientC" /> <!-- xmlBlasterClientC.dll --> <libset dir="${src.c.dir}/socket" libs="pthreadVC" /> <syslibset libs="ws2_32" /> </linker> The other libs show up but not xmlBlasterClientC.dll (i tried all variants with differen 'dir' and 'libs' settings). What is my problem?? thanks Marcel http://www.xmlBlaster.org |
From: Stephen M. W. <ste...@cr...> - 2003-06-23 12:50:16
|
On June 23, 2003 07:59 am, Marcel Ruff wrote: > > I want to compile & link a C program with cpp tasks (cvs from Feb 12, > 2003), the tasks runs fine on Linux and Solaris, but on Windows it compiles > only and does not link because it can't find xmlBlasterClientC.dll. > > But xmlBlasterClientC.dll exists and looks nice: > > 06/23/2003 12:14 PM 73,728 xmlBlasterClientC.dll > 06/23/2003 12:14 PM 175,104 xmlBlasterClientC.pdb > > In verbose mode i can see the the xmlBlasterClientC.dll is not on the > linking command line of the executable: > > [cc] link /NOLOGO /DEBUG /INCREMENTAL:NO /OUT:LogRedirect.exe > '"..\..\..\..\..\..\Program Files\Microsoft Visual Studio .NET > 2003\Vc7\PlatformS > DK\Lib\WS2_32.Lib"' > ..\..\..\..\src\c\socket\pthreadVC.lib > ..\..\..\..\build\obj\LogRedirect.obj > > I tried this with no success: > > <linker name="msvc" if="use-msvc"> > <libset casesensitive="false" dir="${lib.dir}" > libs="xmlBlasterClientC" /> <!-- xmlBlasterClientC.dll --> > <libset dir="${src.c.dir}/socket" libs="pthreadVC" /> > <syslibset libs="ws2_32" /> > </linker> > > The other libs show up but not xmlBlasterClientC.dll (i tried all > variants with differen 'dir' and > 'libs' settings). > > What is my problem?? PE (Windows) dynamic linking does not work the same way as ELF (Linux, Solaris) linking, in that you don't link to the dynamic oject you're going to load at run time, you have to link to a stub file produced at the same time as the dynamic object. Under Windows, dynamic object have the extension .DLL, and the stub files have a .LIB extension. Don't confuse object archives ("convenience libraries"), which also have a .LIB extension, with these dynamic object stubs either. In short, you should have somewhere a file named xmlBlasterClientC.LIB, otherise the msvc linker task will not resolve the library name. -- Stephen M. Webb |
From: Curt A. <ca...@ho...> - 2003-06-24 16:16:03
|
Stephen B Webb wrote: >In short, you should have somewhere a file named xmlBlasterClientC.LIB, >otherise the msvc linker task will not resolve the library name. > > > In addition, you should not use <libset> (see most of the traffic on the list for the last two weeks, you can get an archive from http://sf.net/projects/ant-contrib) but add the lib file using a fileset. <cc...> ... <fileset dir="${lib.dir}" includes="xmlBlasterClientC.lib"/> </cc> |