2011-07-19 3 views
0

Иногда это будет здорово, если я смогу использовать некоторые другие DLL-программы и настроить их. Например, есть устройство, называемое usb uirt, где я могу отправлять сигналы IR с компьютера. Программное обеспечение, которое используется для отправки сигналов сосать, и драйверы с устройства поставляются с большим количеством DLL. В результате я попытался импортировать их в visual studio, но я не смог создать ссылку. Вероятно, это потому, что, возможно, они были написаны на другом языке, я думаю. Но кому-то удалось получить оболочку для этих библиотек, и когда я импортировал эти DLL, она работала, и я смог управлять устройством с помощью C#, что отлично.создать обертку для библиотек C#

В любом случае мне было просто интересно узнать об этом, и я хочу узнать больше об этом ... Как узнать, когда я смогу использовать эти DLL? На каком языке они создаются? Я пробовал поиск по Google, и я нахожу такие вещи, как:

[DllImport("my.dll")] 
static extern void methodA(UInt32[] data); 

Что означают []? Иногда они используют указатели ... Из моего опыта мне никогда не приходилось использовать указатели. Я всегда могу передать переменную в C# по ссылке или по значению плюс с помощью делегатов, я не нахожу нужды в указателях, но, возможно, я ошибаюсь ... Мне интересно узнать обо всем этом. Какую фразу мне следует узнать в Google?

+1

начать с поиска InterOp или P/Invoke: http: // pinvoke.net/ –

ответ

2

То, что вы ищете, это P/Invoke.

Что означает []?

Так вы добавляете атрибуты вызовов функций. Это DllImportAttribute.

В качестве альтернативы, если вы имели в виду набор кронштейнов в UInt32[], то это означает, что это array UInt32.

Иногда они используют указатели ...

Можно создавать указатели в C# unsafe кода, но для использования с P/Invoke есть лучшая система называется marshalling. Marshalling позволяет преобразовывать типы между вашим управляемым кодом C# и неуправляемым кодом в DLL. Например, существует класс для представления указателей на целые числа, которые вы можете использовать в объявлении метода, но обычно вы просто передаете обычное целое число, а код сортировки автоматически преобразует его для вас.

Как узнать, когда я смогу использовать эти DLL? На каком языке они создаются?

Я не уверен, как сказать, является ли данная DLL удалось или нет, но в отношении того, что язык данная DLL была написана не имеет никакого отношения, и очень трудно определить, после того, как он был собран.

+1

Я думал, что OP говорил о '[]' в 'UInt32 []' – MusiGenesis

+0

@MusiGenesis. Я расширил свой ответ на всякий случай, но звучит немного странно, что кто-то знает об атрибутах, но путается массивами , которые по умолчанию присутствуют практически во всех языках. –

0

[DLLImport] - это атрибут класса. Это стандартная часть C#. Подробнее об атрибутах можно узнать здесь - Attributes (C# and Visual Basic)

Этот [] в UInt32[] data означает, что это массив объектов UInt32. Это стандартная часть C#. Вы можете узнать больше о массивах в C# здесь - Arrays (C# Programming Guide)

Смежные вопросы