The .lib file is not created because you're exporting nothing from your library. Change the following line

Many thanks, and sorry for asking a question that turned out to be completely unrelated to Boost.  Your fix worked fine, and I am hoping that with it in place I should be able to get the code to compile using a portable jamfile?

It now works better, so the counterexample is a little longer. Again, the addition of <link>static makes the code compile, but this time it complains about multiply defined symbols within zlib if it is not specified.  What am I doing wrong this time? Many thanks.


import boost ;
boost.use-project ;

using msvc : : "D:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe" ;

BOOST_LIB = d:/boost_1_41_0/stage/lib ;

lib mylib : testlib.cpp :
   <library>/boost//iostreams
   <link>static #breaks if this is removed
   <library-path>$(BOOST_LIB)
;

exe testmain : testmain.cpp : <library>mylib <library-path>$(BOOST_LIB) ;


----------------
testlib.cpp
----------------

#include <ostream>
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/stream.hpp>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/device/file_descriptor.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <boost/config/warning_disable.hpp>

namespace io = boost::iostreams;

__declspec(dllexport) void blah ()
{
    io::filtering_ostream out;
    out.push(boost::iostreams::zlib_compressor(boost::iostreams::zlib_params(boost::iostreams::zlib::default_compression)));
    out.push(boost::iostreams::file_sink("my_file.txt"));
}

--------------------
testmain.cpp
--------------------

extern void blah (void);

int main ()
{
  blah ();
}