Interfacing with C++ Classes

BlitzMax Forums/BlitzMax Programming/Interfacing with C++ Classes

I found the example below on the forums (which I cannot seem to find again), but when I run it, Blitzmax unloads itself. I cannot figure out what is wrong...

class.cpp
class MyClass {
public:
   MyClass();
   void DoSomething();
}

MyClass::MyClass() {}

void MyClass::DoSomething() {}


class.bmx
SuperStrict

Import "class-glue.cpp"

Extern "C"
  Function create_new_myclass:Byte Ptr()
  Function myclass_dosomething(myclass:Byte Ptr)
End Extern

Local b:Byte Ptr = create_new_myclass()

myclass_dosomething(b)


class-glue.cpp
#include "class.cpp";

extern "C" {

  MyClass * create_new_myclass();
  void myclass_dosomething(MyClass * myclass);
}

MyClass * create_new_myclass() {
    return new MyClass();
}

void myclass_dosomething(MyClass * myclass) {
    myclass->DoSomething();
}