Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Обертка на C# для dll написанной на C++


Автор: Basker 9.12.2010, 18:29
Здравствуйте. Существует dll, написанная на С++ для взаимодействия с устройством через usb. Соответственно в ней есть порядка 30 функций возвращающих тип DWORD и в них передается в виде параметра указатель на структуру. Мне необходимо написать обертку на C# для данной вещи, чтобы в последствии работать через данной обертку в программе на C#. Нашел такую вещь как [DllImport("имя_длл")] <объявление процедуры через extern>. Но возникли вопросы:
1. Как мне импортировать процедуры в C# из С++, правильно ли я понял, что через DllImport?
2. Функции в dll возвращают тип DWORD, как мне в C# описать данный тип? Через System.Uint32?
3. Меня смущает взаимодействие данный языков, т.е. ведь в C# все типы, например int представлен как класс, а в С++ нет, как это может сказаться?

Автор: CYBERDREAM 9.12.2010, 18:47
Добро пожаловать Basker

Цитата

1. Как мне импортировать процедуры в C# из С++, правильно ли я понял, что через DllImport?
да они самые

http://msdn.microsoft.com/ru-ru/library/eyzhw3s8.aspx


Цитата

2. Функции в dll возвращают тип DWORD, как мне в C# описать данный тип? Через System.Uint32?
Если не ошибаюсь то да

http://msdn.microsoft.com/en-us/magazine/cc164123.aspx
Figure 2 Non-Pointer Data Types

Цитата

3. Меня смущает взаимодействие данный языков, т.е. ведь в C# все типы, например int представлен как класс, а в С++ нет, как это может сказаться? 

int это структура в шарпе
http://msdn.microsoft.com/ru-ru/library/system.int32.aspx

Автор: Basker 9.12.2010, 19:33
Ура все получилось. Спасибо большое. Если кому нужны примеры конкретной реализации, пишите.

Автор: Ky7m 9.12.2010, 21:57
Ну если попробывать:
Код

.......
public string Serial;
public string Version;
......
[DllImport("USMCDLL.dll")] public static extern System.UInt32 USMC_Init(ref USMC_Devices str);
......
 Console.WriteLine("{0}", USMC_Init( ref dev));


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)