12/06/2013
.NET DllImport метода определенного в C++
Предположим, что есть функция voidMyFunc() на C++, которую нужно вызвать из .NET. Вызов DllImport может распознавать только функции, объявленные с модификатором dllexport.
extern "C" __declspec( dllexport ) void MyFunc();
Из .NET также можно передать примитив AutoCAD в неуправляемый C++ код. Достаточно объявить функцию с указателем и передать в неё свойство UnmanagedObject из .NET.
C++
extern "C" __declspec( dllexport ) void SomeFunc(AcDbLine* line);
.NET
Код - C#: [Выделить]
- [DllImport("MyArxModule.arx",
- CallingConvention = CallingConvention.Cdecl,
- CharSet = CharSet.Unicode)]
- private static extern void SomeFunc(System.IntPtr line);
- [CommandMethod("myCommand")]
- static public void CmdCallCommand()
- {
- Line l = // выполняем то, что нужно...
- SomeFunc(l.UnmanagedObject);
- }
Источник: http://adndevblog.typepad.com/autocad/2012/06/net-dllimport-a-method-defined-in-c.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=100.0
Опубликовано 12.06.2013
Отредактировано 29.08.2015 в 11:57:28
Отредактировано 29.08.2015 в 11:57:28