hi Jim Will it help if i post my jam-root file? Its included below: import python ;
if ! [ python.configured ] { ECHO "notice: no Python configured in user-config.jam" ; ECHO "notice: will use default configuration" ; using python ; } # Specify the path to the Boost project. If you move this project, # adjust this path to refer to the Boost root directory. use-project boost : "C:/Program Files/boost/boost_1_42" ; # Set up the project-wide requirements that everything uses the # boost_python library from the project whose global ID is # /boost/python. project : requirements <library>/boost/python//boost_python ; # Declare the three extension modules. You can specify multiple # source files after the colon separated by spaces. python-extension hello : TestWrap.cpp ; # A little "rule" (function) to clean up the syntax of declaring tests # of these extension modules. local rule run-test ( test-name : sources + ) { import testing ; testing.make-test run-pyd : $(sources) : : $(test-name) ; } >From what you said, its seems the Test1.cpp file needs to be listed under the extension modules, is it? Its as if bjam is totally ignoring Test1.cpp. Any definition/declaration in Test1.cpp file doesn't work. On Fri, Mar 12, 2010 at 11:38 AM, Jim Bosch <tallji...@gmail.com> wrote: > On Fri, 2010-03-12 at 10:36 +0800, hitesh dhiman wrote: > > This error occurs when i declare the class constructor in the c++ > > header file and the definition in the .cpp file. Bjam throws up a > > LNK2019 error, unresolved symbol. > > But if i declare the class constructor in the header file itself, the > > code compiles. > > Here's the code: > > > > > > Test1.h > > #include <windows.h> > > //using namespace std; > > > > > > class World > > { > > public: > > World(); > > ~World(); > > void set(std::string msg) { this->msg = msg; } > > std::string greet() { return msg; } > > std::string msg; > > }; > > > > > > Test1.cpp > > #include "Test1.h" > > > > > > > > > > World::World() {}; > > World::~World() {}; > > int addition(int a, int b) > > { > > int z = a + b; > > return z; > > } > > > > > > Wrapper file: > > #include <boost/python.hpp> > > #include "Test1.h" > > > > > > > > > > BOOST_PYTHON_MODULE(hello) > > { > > using namespace boost::python; > > class_<World>("World") > > > > .def("greet", &World::greet) > > .def("set", &World::set) > > ; > > } > > > > > > Is it a compiler bug? I want to define the constructors in the cpp > > file, and not the header file. > > -- > > I've never had any problems doing exactly that, and I can't say more > about your particular situation without seeing your build system setup > (which probably actually wouldn't help me, since I don't know much about > bjam or Windows). > > Are you certain your source file is getting compiled into (or otherwise > linked) to the module's shared library? > > Did you compile the source file with the same compiler flags as the > wrapper file? They probably don't have to be identical, but some may be > important. > > My guess that it's not just the constructor; you aren't linking against > anything in your non-wrapper cpp file. > > > Jim > > > > _______________________________________________ > Cplusplus-sig mailing list > Cplusplus-sig@python.org > http://mail.python.org/mailman/listinfo/cplusplus-sig > -- Regards, Hitesh Dhiman Electrical Engineering National University of Singapore
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig