Компьютеры | Позвать функцию на Си |
|
---|---|---|
chav1961: на SensorData *data |
|
|
1. Тип "ссылка" в С++ ( SensorData & xxx) - это, на самом деле, указатель (т.е. SensorData * xxx), но, в отличие от указателя, ссылка не требует разыменования, т.е вместо (*data).filed пишется просто data.field. В некотором смысле они взаимозаменяемые. 2. Да, конечно уймется. Дело в том, что с DLL связка происходит на стадии выполнения (через LoadLibrary и GetProcAddress), поэтому и объявлять точки входа нужно так, как я вам раньше писал, иначе линкер будет пытаться их разрешить в момент сборки exe-шника. |
|
|
Теперь недоволен этими строчками: Vmax\main.c(182): warning #2168: Operands of = have incompatible types 'int __stdcall function(void *)' and 'int __stdcall function(int)'. |
|
|
По идее, описания должны были получиться следующими: HANDLE (*HTCSensorOpen)(int sensor_ID); Соответственно, определение адресов: HTCSensorOpen= (HANDLE (*)(int))GetProcAddress(hLib,_T("HTCSensorOpen")); Ну и вызовы: hGsens= (*HTCSensorOpen)(1); Ну а насчет "ничего не происходит", увы, помочь ничем не смогу: отладка через форум - боюсь, что такого не бывает Ставьте трассу, выдавайте сообщения через MessageBox, проверяйте коды возврата - что тут еще сказать... |
|
|
Спасибо, но все тихо. |
|
|
Пришел к выводу, что эта функция все стопорит. Без нее часики тикают. |
|
|
Я думаю, адрес функции HTCSensorGetDataOutput не находится! |
|
|
Мне кажется, у вас в названии HTCSensorGetDataOutput пробел в конце, когда вы пользуетесь GetProcAddress. Если она такого имени не находит, действительно возвращается адрес NULL. Загляните на всякий случай еще и в саму ДЛЛ-ку (хотя бы блокнотом), поищите такое имя через Ctrl-F |
|
|
chav1961: пробел в конце |
|
|
Преобразовать адрес можно, например, так: char buffer[100]; sprintf(buffer,"addr=%08x",(unsigned long)адрес); MеssageBox(NULL,buffer,"test",MB_OK); Адреса, конечно, должны оказаться разные. Память под структуру отводится, как вы выразились, "сначала" Если есть сомнения по размеру, просто допишите в конец какой-нибудь большой массив, например char empty[100]; Было бы здорово посмотреть содержимое структуры до вызова и после вызова. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |