Мне удалось установить 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 может быть необходим?)
Тем не менее меня очень интересует, как можно решить эту проблему (без необходимости изменения настроек сборки) или нет.
Я работаю с mathgl 2.1.2
и столкнулся с той же проблемой. Существует несоответствие между библиотеками времени выполнения. Mathgl
использования компилятор по умолчанию но при создании нового проекта с запятыми он использует llvm
, Поскольку строка размещается в вашем исполняемом файле через LLVM
, но затем перешел к Mathgl
который использовал другую библиотеку времени выполнения.
Операции с памятью могут завершиться ошибкой, когда указатель, выделенный в одной библиотеке, передается другой для освобождения.
Также могут быть структурные различия.
Других решений пока нет …