Oops, forgot to tell what the approach actually was! The Qt part is written in C++ and compiled into a dll. The D part links to this and passes messages to it across a series of extern(c) functions. Some messages are pretty high level and others are low level - whatever I needed to get the app working with a minimal of C++.