Почему mglData вызывает исключение BAD ACCESS?

Мне удалось установить MathGL на Mac OS и получить mglGraph генерировать мне образцы графиков. Тем не менее, когда я пытаюсь использовать mglData чтобы обработать мои данные, происходит сбой с ошибкой «EXC_BAD_ACCESS». Зачем? Есть ли что-то, что мне нужно сделать, я не сделал?

Я установил mathgl с помощью cmake, make и make install (используя sudo, чтобы быть в безопасности). Затем я добавил / USR / местные / включить а также / USR / местные / Библиотека пути к проекту и добавил libmgl.dylib а также libmgl-wnd.dylib ссылки на проект. Есть что-то, что я пропустил? Я не мог найти никого другого с ошибкой (ну, я обнаружил много ошибок плохого доступа, но ни одна из них не была вызвана mglData). Ошибка появляется, как только я пытаюсь создать экземпляр mglData, так что любое из этого вызывает исключение:


mglData *data = new mglData();
mglData data;
etc...

РЕДАКТИРОВАТЬ

Итак, вот голая черта моего кода, который компилируется, но вылетает:


#include iostream
#include mgl2/mgl.h

int main(int argc, const char * argv[])
{
mglData y;
return 0;
}

Стек вызовов потока, когда он падает,:

Стек вызовов потоков

И значения всех переменных таковы:

Значения переменных


Semi-решаемые Получил это работает

После того, как я смог скомпилировать свой проект с g ++, я попытался изменить настройки сборки, и кто бы мог поверить, мне удалось запустить его! Все, что я сделал, это изменил Стандартная библиотека C ++ в libstdc++ (GNU C++ standard library), Теперь я не использую по умолчанию, который должен использовать libc++ (LLVM C++ standard library with C++ 11 support), В настоящее время это, кажется, работает нормально для моего приложения Какао, но я не знаю, как долго: P (При использовании большего количества классов NS * я беспокоюсь, что LLVM может быть необходим?)

Тем не менее меня очень интересует, как можно решить эту проблему (без необходимости изменения настроек сборки) или нет.

3

Решение

Я работаю с mathgl 2.1.2 и столкнулся с той же проблемой. Существует несоответствие между библиотеками времени выполнения. Mathgl использования компилятор по умолчанию но при создании нового проекта с запятыми он использует llvm, Поскольку строка размещается в вашем исполняемом файле через LLVM, но затем перешел к Mathgl который использовал другую библиотеку времени выполнения.
Операции с памятью могут завершиться ошибкой, когда указатель, выделенный в одной библиотеке, передается другой для освобождения.
Также могут быть структурные различия.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]