Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение DLL платы видеозахвата в C# 
:(
    Опции темы
G_Vit
  Дата 7.2.2009, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 10.2.2008

Репутация: нет
Всего: нет



Есть задача подключения платы видеозахвата в проекте на C#.
Изготовитель платы разместил на своем сайте DVP-7010A SDK и очень плохое руководство пользователя с большим количеством ошибок.
Есть также наполовину рабочий пример DVP-7010AX_Sample_code, и вот что я там нашел:

есть файл DVP7010ADLL.h
Код
class DVP7010ADLL
{
public:
        int Adv_DVPAPI_CreateSDKInstence(void **pp);
      // почему это отличается от структуры остальных методов???
        virtual int Adv_DVPAPI_GetNoOfDevices() PURE;
        virtual int Adv_DVPAPI_InitSDK(int NoOfDevs, int* IDList) PURE;
        ....
}

а также файл DVP7010AEXEDlg.cpp, где написано следующее
Код
DVP7010ADLL *DVPSDK;

// CDVP7010AEXEDlg message handlers

typedef int (WINAPI* ptr_func1)(void **pp);
ptr_func1 Adv_DVPAPI_CreateSDKInstence  = NULL;

HINSTANCE hDll;

BOOL CDVP7010AEXEDlg::OnInitDialog()
{
....
        hDll = LoadLibrary("DVP7010A");
        if (hDll)
        {
                Adv_DVPAPI_CreateSDKInstence = (ptr_func1)GetProcAddress(hDll,
_T("Adv_DVPAPI_CreateSDKInstence"));
        }
        if (Adv_DVPAPI_CreateSDKInstence((void **)&DVPSDK)!=SUCCEEDED) return TRUE;
...



я выполняю следующее:
точка входа в DLL IntPtr hwnd = LoadLibrary( "DVP7010A.dll" ); // ОК олучил адрес
расположение функции в DLL IntPtr procAddr = GetProcAddress( hwnd,"Adv_DVPAPI_CreateSDKInstence" );   // ОК получил адрес
а дальше что делать с этим не понимаю

Хотелось бы знать, как работать в С# с  С++-ными двойными указателями, есть ли способ заменить их, или как-нибудь представить по другому
Все очень плохо со знанием в плюсах, прошу поподробнее.
PM MAIL   Вверх
Mikant
Дата 9.2.2009, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.1.2007

Репутация: нет
Всего: нет



Ничто не мешает использовать "небезопасный код" (unsafe) . Там вполне можно и с ** работать ("С++-ными" =))) ). Для этого в свойствах проекта надо поставить галочку "разрешить небезопасный код" ("allow unsafe code"), а в рабочем классе, в качестве, модификатора, выставить unsafe. также можно это слово ставить прямо на небезопасной строке.

А по поводу "ссылка на ссылку", так это то же самое, что и экземпляр класса Б в классе А... (Не забываем, что класс - это ссылочный тип) Учим философию ООП
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.