Below is a very simple extension, mostly cut from the provided example.  It compiles and builds the cinterpreter.pyd without error, but when I do the following in python:
import cinterpreter

I get this result:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dynamic module does not define init function (initcinterpreter)

I looked over the example again and again, and I simply cannot see what the problem is.  What is wrong?


#ifdef _MSC_VER
// disable warning C4786: symbol greater than 255 character,
// nessesary to ignore as <map> causes lots of warning
#pragma warning(disable: 4786)

#include "CXX/Objects.hxx"
#include "CXX/Extensions.hxx"

#include <assert.h>

#include <algorithm>
#include <iostream>

class cinterpreter_module : public Py::ExtensionModule<cinterpreter_module>
        : Py::ExtensionModule<cinterpreter_module>( "cinterpreter" )
        add_varargs_method("test", &cinterpreter_module::c_test, "test() is just a test.");

        initialize( "cinterpreter module initialize." );

        Py::Dict d( moduleDictionary() );

    virtual ~cinterpreter_module() {}


   Py::Object c_test(const Py::Tuple &args) {
        std::cout << "c_test() called." << std::endl;
        return Py::None();

extern "C" void initcinterpreter()

    static cinterpreter_module* cinterpreter = new cinterpreter_module;

// symbol required for the debug version
extern "C" void initcinterpreter_d()
{ initcinterpreter(); }