ADN Open CIS
Сообщество программистов Autodesk в СНГ

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#: [Выделить]
  1. [DllImport("MyArxModule.arx",
  2.   CallingConvention = CallingConvention.Cdecl,
  3.   CharSet = CharSet.Unicode)]
  4. private static extern void SomeFunc(System.IntPtr line);
  5.  
  6. [CommandMethod("myCommand")]
  7. static public void CmdCallCommand()
  8. {
  9.   Line l = // выполняем то, что нужно...
  10.   SomeFunc(l.UnmanagedObject);
  11. }

 

Источник: 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