Ich habe begonnen für ein projekt ein C++ Modul mit boost::python zu schreiben.
Wenn ich jedoch auf private datenmember zugreife, oder einen nicht-default konstruktor verwende, crasht python mit Fehlercode 0xc0000005 (Nullzeiger). Daher vermute ich, das der this-Zeiger null ist, kann das jedoch mangels möglichkeit, den msvc-debugger in python reinzuhängen, nicht überprüfen.
Minimalcode:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//math.h (gekürzt)
namespace nativeutil
{
class vector2
{
public:
double x;
double y;
vector2() {}
vector2(const vector2& rhs):x(rhs.x), y(rhs.y) {}
}
}
|
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//pymodule.cpp
#include <boost\python.hpp>
#include "_math.h"
BOOST_PYTHON_MODULE(nativeutil)
{
using namespace boost::python;
class_<nativeutil::vector2>("vector2", "a 2D vector class")
.def(init<double,double>())
.def_readwrite("x", &nativeutil::vector2::x)
.def_readwrite("y", &nativeutil::vector2::y);
}
|
Folgende Scripte crashen:
|
Quellcode
|
1
2
3
|
from bin.nativeutil import vector2
v=vector2()
v.x #crash
|
|
Quellcode
|
1
2
|
from bin.nativeutil import vector2
v=vector2(1.0,1.0) #crash
|
Weiß jemand, woran das liegt, oder wie ich z.B. einen C++ debugger in python einhänge?