Небольшое замечание.
Вижу у вас уже второй раз наименование типа "?RenderMarkup@@YAXPEAEPEB_WHHH1M@Z". Что мешает выдавать экспортируемым функциям нормальные имена вместо этой вырвиглазной mangled-херни и не тащить ее в C#?
Есть же, как минимум, 2 варианта:
— использовать extern «C» __declspec(dllimport) вместо просто __declspec(dllimport)
— использовать файл .def со следующим содержимым:
Вроде как в 7ке библиотечки на месте, насчет Висты не уверен. Как это делать в ХР без поддержки DirectX 10 — непонятно. Сам бы не отказался — у меня сервер на 2003, правда он без графической карты :(
Использование Direct2D и DirectWrite в .Net-среде