![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| bitwise |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2008 Репутация: нет Всего: нет |
Всем привет!
Я пишу обертку на C# для С-библиотечки. Так вот, у меня есть структуры:
И есть пара функций:
Так вот, что делаю я:
Так вот я не понимаю, почему отрабатывает вызов первой функции и не отрабатывает вызов второй. Помогите пожалуйста, че-то я никак не соображу где ошибся. Спасибо. |
||||||
|
|||||||
| mullih |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 19.12.2006 Репутация: нет Всего: 2 |
Может
void free_device_list( device* dev ); [Dllimport("api.dll")] static extern int free_device_list( IntPtr device_ptr ); Это сообщение отредактировал(а) mullih - 21.4.2008, 10:30 |
|||
|
||||
| bitwise |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2008 Репутация: нет Всего: нет |
Прошу прщения, я очепятался...
int get_device_list( device* dev ); void free_device_list( device* dev ); и соответственно... [Dllimport("api.dll")] static extern int get_device_list( IntPtr device_ptr ); [Dllimport("api.dll")] static extern void free_device_list( IntPtr device_ptr ); |
|||
|
||||
| mullih |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 19.12.2006 Репутация: нет Всего: 2 |
а можно код функций
int get_device_list( device* dev ); void free_device_list( device* dev ); |
|||
|
||||
| bitwise |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2008 Репутация: нет Всего: нет |
К сожалению кода нет... Это сторонняя DLL
Может я структуру неправильно отмаршалил? Это сообщение отредактировал(а) bitwise - 21.4.2008, 11:06 |
|||
|
||||
| mullih |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 19.12.2006 Репутация: нет Всего: 2 |
С описанием не помогу так как точно не уверен но попробуй в шарпе
struct params { char* info; params* next; }; описать и p_params сделать объетом этой структуры |
|||
|
||||
| bitwise |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2008 Репутация: нет Всего: нет |
Я обязательно попробую и отпишусь о результате...
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Вместо IntPtr можно саму структуру по ref передать:
-------------------- ![]() |
|||
|
||||
| bitwise |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2008 Репутация: нет Всего: нет |
В общем бага оказалась надуманной, всем спасибо за брейнсторм.
Оказывается ф-ция выглядит так: int get_device_list( device** dev ); вместо int get_device_list( device* dev ); Поэтому все и падало.... Я вот еще что не понимаю. Есть некая функция в some.dll, которая принимает указатель на структурку:
Так вот что делаю я :
При передаче параметра в функцию как IntPtr он переписывается. Насколько я понимаю так не должно быть и для того чтобы освободить память я сохраняю первоначальное значение в old_pdata, чтобы потом по нему освободить память. Но это коряво. Подскажите что я неправильно делаю??? |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |