Вы получаете ложные символы в библиотеке, которых не должно быть.
Официальное обходное решение заключается в использовании более новой версии инструментов ITK, но если вам нужно использовать более старую версию, то вам нужно настроить с помощью опции C -std=gnu89
, чтобы сделать inlining таким образом, чтобы это сделать Работа.
OSX поставляется с двумя библиотеками C++ - тот, который лязг по умолчанию для libc++
и один, что официальный ССАГПЗ по умолчанию libstdc++
, если вы собираете множественные C++ проектов для создания на конечной цель, то вы должны убедиться, что они все скомпилируются с той же стандартной библиотекой C++.
В предположении, что вы планируете на связь с libstdc++
, так это то, что вы указали, я обновил инструкцию компиляции, как так:
Это означает, что вы должны запустить лязг с параметрами:
cmake -DBUILD_SHARED_LIBS=true -DCMAKE_C_FLAGS=-std=gnu89 -DCMAKE_CXX_FLAGS="-stdlib=libstdc++ -std=c++03" CMakeLists.txt
Code/Common/itkKLMSegmentationBorder.h
файл имеет несколько ссылок на rhs.m_Pointer
, которые должны быть rhs->m_Pointer
- компилятор делает это очевидная ошибка.
Там много вопросов путаницы шаблонный метод instantion, я добавил несколько ссылок здесь:
линии 657 в Utilities/vxl/core/vnl/vnl_matrix_fixed_ref.h
добавить this->
префикс к вызову equal
В файле Code/Common/itkParametricPath.txx
на линиях 46, 137 необходим дополнительный этом-> перед всеми вызовами Evaluate
же вопрос с Code/Numerics/Statistics/itkWeightedCentroidKdTreeGenerator.txx
, в строках 120, 126 с вызовами GenerateTreeLoop
Тот же вопрос с Code/BasicFilters/itkTernaryFunctorImageFilter.txx
, в строках 49, 62 & 75 с вызовом SetNthInput
Та же проблема с Testing/Code/Common/itkMeshSourceGraftOutputTest.cxx
, в строке 153 в вызове GraftOutput
SetNthInvocation
проблем с Code/BasicFilters/itkBloxBoundaryPointImageToBloxBoundaryProfileImageFilter.txx
There are more, but they're a relatively tedious fix to get it to compile. I've put a pastebin of the diff up , which should be OK, although it was from a slightly unclean version so there may be some changes missing.
Я сдался, пытаясь исправить его, чтобы скомпилировать его с помощью libc++
- вопросы двусмысленности wi th abs
было началом, и, вероятно, больше, поэтому я не чувствую, что это стоит того.
Хм ... никогда не было денег, чтобы позволить MAC ... но ... MAC - это своего рода BSD-based. А под BSD обычно стандартными libs не являются libstdC++, а libC++, если я не ошибаюсь. – BitTickler
@BitTickler ok давайте попробуем – Newben
@BitTickler теперь я получаю ошибку «раньше» 'ошибка: недопустимые операнды в двоичное выражение ('std :: ofstream' (aka 'basic_ofstream') и 'long') if (* fp == NULL) ' –
Newben