Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146

При обращении к функции из dll ошибка attempted to read or write protected memory

29.09.2015, 12:47. Показов 2251. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
После создание контекста опенгл, пробую использовать функции из расширения glew. И вот при обращении и C# в длл
на c++/cli появляеться ошибка attempted to read or write protected memory
C++
1
2
3
4
5
if (glewInit() == GLEW_NO_ERROR)
    {
      GLuint vertexbuffer;
      glGenBuffers(1, &vertexbuffer);
    }
т.е. glewInit() инициариовался без ошибок
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2015, 12:47
Ответы с готовыми решениями:

Ошибка Additional information: Attempted to read or write protected memory при вызове OpenFileDialog
При 6 визове OpenFileDialog. То что видает. A first chance exception of type 'System.AccessViolationException' occurred in...

Attempted To Read Or Write Protected Memory при действиях с Notesricht
Здравствуйте! Пишу на C#, хочу добавить NotesRichTextItem в документ. Следующий код: // это работает нормально ...

DLLImport C++ библиотеки и ошибка "Attempted to read or write protected memory"
Нужно прикрутить метод из С++ библиотеки myDll.dll. Выглядит его прототип так int MyMethod(unsigned char* materials, ...

7
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
29.09.2015, 18:52
Лучший ответ Сообщение было отмечено m0 как решение

Решение

m0, в качестве предположения - vertexbuffer съел сборщик мусора. Закрепите его
C++
1
2
pin_ptr<GLuint> vbPtr = &vertexbuffer;
glGenBuffers(1, vbPtr);
1
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
30.09.2015, 14:12  [ТС]
tezaurismosis, Да спасибо помогло. А все переменные теперь обязательно так закреплять? Или есть опция у компилятора?
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
30.09.2015, 16:00
m0, только указатели и только те, для которых бы в C# приходилось использовать слово fixed. По C++/CLI инфы не так много, так что попробуйте зацепится за это ключевое слово, оно, вроде как, работает схоже с pin_ptr<T>. (в статье обратите внимание именно на фиксирование адреса, буферы фиксированного размера - уже другая песня).
И ещё немного уточню свой предыдущий пост:
Цитата Сообщение от tezaurismosis Посмотреть сообщение
vertexbuffer съел сборщик мусора
Не обязательно съел сборщик, CLR вправе двигать объекты по памяти - после такого движения управляемые указатели (ссылочные переменные) остаются валидными, а классические плюсовые указатели - нет.

Про подобный ключ для компилятора не слышал.
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
30.09.2015, 16:07  [ТС]
tezaurismosis, Вообще это странно, у меня сейчас такая проблема и в не управляемом с++, т.е. я просто создал статическую либу, написал обвертку на c++/cli и там сново уничтожается эта перменная до ее первого использования. Мне кажется я делаю, что-то не так
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
30.09.2015, 16:30
m0, не видя кода ничего сказать не могу.
1
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 146
30.09.2015, 17:26  [ТС]
tezaurismosis, Да уже все нормально, просто сделал клин и ребилд. Ну я получается все вынес в нативный с++, в с cli оставил только врапер
C++
1
2
3
4
5
6
7
8
GlCoreWrapper::GlCoreWrapper(INT_PTR hwnd)
{
    m_NativeInstance = new GlCore(hwnd);
}
void GlCoreWrapper::Render()
{
    m_NativeInstance->Render();
}
теперь с памятью все ок.
0
30.09.2015, 17:29

Не по теме:

Цитата Сообщение от m0 Посмотреть сообщение
теперь с памятью все ок
Вот и славно :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.09.2015, 17:29
Помогаю со студенческими работами здесь

WinApi функция GetClassName в С#. "Attempted to read or write protected memory"
Вот код, который я пытаюсь заставить работать. Здесь я пытаюсь по дескриптору окна узнать название его класса(в данном случае...

Ошибка при обращении к DLL
Здравствуйте. Продолжаю работу с TIFF файлами в среде C++Builder 2010 с помощью библиотеки LibTIFF. На этом форуме где-то уже была соя...

The memory could not be "read" \ "write"; Read\WriteProcessMemory
Добрый день. Вечная проблема при попытке прочитать \ записать в память, при помощи Read\WriteProcessMemory - это ошибки The memory could...

Ошибка в dll при обращении к потоку вывода cout
друзья программисты, подскажите пожалуйста, как решить проблему с dll. Выдаёт ошибку в функции реализованной в DLL, которая подключается...

Функции write и read
Здравствуйте, уважаемые! Вопросы по работе с файлом через fstream. Возник вопрос по поводу записи структуры в нужном месте файла....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru