Author Topic: Этот забавный p/invoke  (Read 2648 times)

0 Members and 1 Guest are viewing this topic.

Offline Алексей Гринь

  • Blogger
  • *
  • Posts: 24112
  • Gender: Male
on: July 26, 2009, 06:17
Для прикола к своей библиотеке заодно пишу биндинг для .NET.
Случился такой казус, в нативной либе есть простейшая функция:

Code: [Select]
bool SGETexture_isResident(SGETexture* self)
{
    if(!self || !self->m_number)
        return false;

    GLboolean residence;
    glAreTexturesResident(1, &self->m_number, &residence);

    return (bool)residence;
}

В .NET описываю так:
В статическом классе NativeMethods:
Code: [Select]
        [DllImport(sgedll)]
        public static extern bool SGETexture_isResident(IntPtr self);

... и как свойство класса-обёртки:
Code: [Select]
        public bool IsResident
        {
            get
            {
                return NativeMethods.SGETexture_isResident(handle);
            }
        }

При запуске в дебуге в VS2008 получаю AccessViolationException на этом месте (причём не сразу, успевает несколько раз вызваться нормально). При запуске того же самого .NET, но вне VS2008 -- всё нормально. В нативном варианте тоже всё нормально.
Сижу терь думаю, что не так :(
肏! Τίς πέπορδε;

Reply #1 on: August 1, 2009, 23:43
Вот опять! Если запускать проект изнутри Visual Studio, то .НЕТовская консоль не принимает символы, отправляемые нативной библиотекой (через printf()), экран пуст.
А если запускать то же, без изменений, но вне Visual Studio, то всё нормально, всё отображается.

Шо за дела.
肏! Τίς πέπορδε;

Offline myst

  • Posts: 35471
Reply #2 on: August 2, 2009, 00:06
Лето, жара, кактусы... ;D

Offline RawonaM

  • Posts: 43558
Reply #3 on: August 2, 2009, 00:15
Лето, жара, кактусы... ;D
Кактусы и правда цветут во всю. Один такой кактус под два этажа тут у меня недалеко.
А вообще на юге там огромные поля кактусов, тоже недавно я их рассматривал. Плоды довольно популярны в Израиле в качестве фруктов, а также повидло неплохое продают в магазинчике при плантации.

Offline myst

  • Posts: 35471
Reply #4 on: August 2, 2009, 02:45
Плоды довольно популярны в Израиле в качестве фруктов, а также повидло неплохое продают в магазинчике при плантации.
У кактусов есть плоды, и их едят?! :o

Offline Beermonger

  • Posts: 2985
  • One badass monkey
Reply #5 on: August 2, 2009, 03:00
Плоды довольно популярны в Израиле в качестве фруктов, а также повидло неплохое продают в магазинчике при плантации.
У кактусов есть плоды, и их едят?! :o

У кактусов плоды есть даже у черноморских. Неужели в детстве летом в Алушту не ездили? Я вот ездил еще в какой-то пост-совковый пансионат, там везде росли эти кактусы, сами плоские как бобриный хвост, и зеленые, а на них растут цветы, и потом из цветов плоды.

Offline myst

  • Posts: 35471
Reply #6 on: August 2, 2009, 03:12
Ну и как на вкус?

Offline Beermonger

  • Posts: 2985
  • One badass monkey
Reply #7 on: August 2, 2009, 03:18
Не помню уже какой именно вкус, но помню что сладкие были :).

Offline myst

  • Posts: 35471
Reply #8 on: August 2, 2009, 03:19
Не помню уже какой именно вкус, но помню что сладкие были :).
Так это из них кактусовую водку делают?

Offline RawonaM

  • Posts: 43558
Reply #9 on: August 2, 2009, 03:33
У кактусов есть плоды, и их едят?! :o
Едят-едят. Они бывают вкусные, если хорошие, только желательно чистить в толстых перчатках - колятся гады и микрозанозы остаются.

Offline Алексей Гринь

  • Blogger
  • *
  • Posts: 24112
  • Gender: Male
Reply #10 on: August 5, 2009, 23:20
Отправил я дотнет в кое-какое отверствие человеческого тела.
Он мне стал ещё теперь и SEHException выкидывать, которого во время хода нативного проиложения не выкидывается.

Гимору вагон, отдачи ноль :)
肏! Τίς πέπορδε;

Offline myst

  • Posts: 35471
Reply #11 on: August 5, 2009, 23:30
Поздравляю с отказом от кактуса. За это стоит выпить. :UU:

Offline Алексей Гринь

  • Blogger
  • *
  • Posts: 24112
  • Gender: Male
Reply #12 on: August 5, 2009, 23:37
Поздравляю с отказом от кактуса. За это стоит выпить. :UU:
Да не, просто  интересно было посмотреть в действии. 95% всё ОК, остальные 5% приводят к необъяснимым вылетам. Однажды EngineExecutionException вылетело, то бишь ошибка ядра CLR .NET :)
肏! Τίς πέπορδε;

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?:

Источник: http://www.chelsea-today.ru/6439.html.