[C++-sig] Using boost::python in an /clr application
Luke Titley
luke.titley at naturalmotion.com
Sat Sep 8 12:56:07 CEST 2007
Hey Tom,
I'm having exactly the same problem as you have described in this message.
Were you able to resolve it? If so I would very much like to hear how.
Kind Regards,
Luke Titley
Hi everyone!
I'm embedding a python interpreter in an /clr application using visual
studio 2005. For the most simple example I created a new CLR console
application using the visual studio project wizard and added a few lines
of code resulting in the following .cpp file.
// CRLConsoleApp.cpp : main project file.
#include "stdafx.h"
// include as unmanaged and disable warnings for __fastcall
#pragma unmanaged
#pragma warning(disable:4561)
#include <boost/python.hpp>
#pragma warning(default:4561)
#pragma managed
// just a simple function
int sampleFunction()
{
return 42;
}
// initialize a sample modul
void initSampleModul()
{
boost::python::def("sampleFunction",sampleFunction);
}
int main(array<System::String ^> ^args)
{
return 0;
}
This works perfectly fine, I can compile it, I can link it, I can run
it, I can use the sample function in a python script running in an
embedded python interpreter.
Exposing a class to python is not working quite as I want it to. I
change the above .cpp file to include to following lines of code.
// most simple class to expose to python
class SampleClass {
};
// initialize the sample modul exposing the sample class
void initSampleModul()
{
boost::python::class_<SampleClass>("SampleClass");
}
using the above code gives me two linking errors:
error LNK2020: unresolved token (06000007)
boost.python.handle<_object>::<MarshalCopy>
error LNK2020: unresolved token (06000008)
boost.python.handle<_object>::<MarshalDestroy>
The version of boost I'm using here is 1.33.1 which was build using the
VC_80 tools and I'm using Python version 2.5.
The above visual studio project is linked to
boost_python-vc80-mt-1_33_1.lib and python25.lib
I've done the very same thing (linking to the same .lib files using
mostly the same code except /clr specific parts) in a win32 console
application and exposing the sample class to python works as expected. I
can use the class in my embedded python interpreter.... just doing that
in an CLR application is not working.
I'm very thankful for any help I can get!
best regards,
Tom
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cplusplus-sig/attachments/20070908/5e70d3aa/attachment.htm>
More information about the Cplusplus-sig
mailing list