Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.96.159] |
|
Сообщ.
#1
,
|
|
|
Я хочу научиться работать и уметь создавать динамические библиотеки, а так же развивать свои знания по OpenGL.
По работе я создал(частично взял готовый класс, из различных кинг и туториалов) классы для работы с шейдерами, текстурами, мешами и т.д. Собирал это все как обычный статический проект в Visual studio 2012. Все работало, где-то криво, где-то хорошо. Меня все устраивало. Возможностей хватало и все работало без сбоев. Для работы и инициализации OpenGL я использовал библиотеку glew ( так же рассматривал GLLoadGen). Для статического проекта использовал статическую сборку glew. Решил я научиться создавать и работать с динамическими библиотеками. Взял свой проект и добавил в него следующее #if !defined(PROJECTNAME_STATIC) #define PROJECTNAME_API_EXPORT __declspec(dllexport) #define PROJECTNAME_API_IMPORT __declspec(dllimport) #pragma warning(disable: 4251) #else #define GLEW_STATIC #define PROJECTNAME_API_EXPORT #define PROJECTNAME_API_IMPORT #endif #if defined(PROJECTNAME_EXPORTS) #define PROJECTNAME_API PROJECTNAME_API_EXPORT #else #define PROJECTNAME_API PROJECTNAME_API_IMPORT #endif В проекте где создается библиотека в препроцессоре поставил PROJECTNAME_EXPORTS. Ну и проекте убираю когда надо PROJECTNAME_STATIC. glew то же собираю как динамическую библиотеку. В debug режиме вылезает вот такая ошибка: Unhandled exception at 0x771DC6D1 in test.exe: 0xC0000005: Access violation executing location 0x00000000. в следующей строчке при создании шейдерной программы: if( this->ShaderProgramHandele <= 0 ) { this->ShaderProgramHandele = glCreateProgram(); if( this->ShaderProgramHandele == 0) { throw СGLSLProgramException("Unable to create shader program."); } } Не могу понять почему при использовании статической библиотеки все в порядке, а при динамической вылезает вот такая ошибка. Благодарю за внимание. |