CLR Marshaling STL
Каким образом прописать в управляемом коде такой тип (язык C#, VS 2003), чтобы его передать на вход прототипу функции. В справке нашеел только стандартные типы. Например:
void* - System.IntPtr
unsigned char - System.Byte
short - System.Int16
char* - System.String
и т.д.
Никак. Эстеэль эстэелю - рознь. Нужно точно знать какой версии он, и вызывать через C++ естественно. На C# это изначально провально.
Почему-то мне кажется это сомнительным, слишком уж много кода написано с использованием STL, чтобы майкрософт отказалось от обеспечения поддержки и повторно используемого кода с STL (хотя с них станется). Как же их хваленая "все совместимость" или это чистый пиар...=)) Может есть еще какие-нибудь мысли на эту тему...
Нет. STL вообще никак не корреллирут с .NET. Ни один тип из этой библиотеки или библиотеки boost нельзя использовать в .NET или хоть как-то представить его средствами - они несовместимы с системой типов CTS.
Возможен только опосредованный подход, когда создается некий фасад на C++ для работы с этими типами.
З.Ы. Делать экспортируюмую функцию, принимающую в качестве параметров stl-структуру данных - это очень-очень нехороший подход даже в мире C++.
З.Ы.Ы. Попробуйте сперва разобраться в принципах CTS прежде чем критиковать мелкомягких по поводу "обратной совместимости" с STL - совсем бессмысленными костылями в .NET.
По теме: нашел в инете несколько статей в форумах на мсдн, действительно, придется создавать управляемый код на С++, прописывать там вызовы методов неуправляемого кода и уже потом тягать их из приложения си-шарп...мда..
Всем спасибо за внимание!