станд.:: минута переопределяется, но как?

Сделайте streflop или повысьте изменение библиотек определение станд.:: минута?

У меня есть проект, который компилирует прекрасный с g ++/make, ПОКА я не объединяю его со сборкой CMake другого проекта (использующий add_directory). Внезапно я добираюсь:

no matching function for call to min(double&,float)

Номер строки это требует ошибки, идет, является неправильным (это указывает на последнюю строку исходного файла), но я собираюсь предположить, что соответствующие нормы - это:

first = std::min (first, key.mTime);

Где сначала объявляется как двойное.

'Родительский' проект (Spring РТС) повышение использования и streflop, но даже после замены всего включает для <math.h> с "streflop_cond.h" в дочернем проекте (assimp) проблема остается.

Возможно, некоторые флаги компилятора ответственны, я не уверен. Теории ценились бы. Источник для обоих проектов доступен онлайн.

Я провел почти 7 часов на это теперь, и я не кажусь немного ближе решению.

Полные флаги ошибки и сборки:

    [ 61%] Building CXX object rts/lib/assimp/code/CMakeFiles/assimp.dir/ScenePreprocessor.cpp.o
cd /mnt/work/workspace/spring-patch-git/linux/build/rts/lib/assimp/code && /usr/bin/g++   -Dassimp_EXPORTS -DSYNCCHECK -DNO_AVI -DSPRING_DATADIR=\"/usr/local/share/games/spring\" -DSTREFLOP_SSE -DASSIMP_BUILD_DLL_EXPORT -msse -mfpmath=sse -fsingle-precision-constant -frounding-math -mieee-fp -pipe -fno-strict-aliasing -fvisibility=hidden -fvisibility-inlines-hidden -pthread  -O0 -Wall -Wno-sign-compare -DDEBUG -D_DEBUG -DNO_CATCH_EXCEPTIONS -gstabs -fPIC -I/mnt/work/workspace/spring-patch-git/spring/rts/System -I/mnt/work/workspace/spring-patch-git/spring/rts/lib/lua/include -I/mnt/work/workspace/spring-patch-git/spring/rts/lib/streflop -I/usr/include/SDL -I/usr/include/boost-1_39 -I/mnt/work/workspace/spring-patch-git/spring/rts -I/usr/include/AL -I/usr/include/freetype2 -I/mnt/work/workspace/spring-patch-git/spring/rts/lib/assimp/include -I/mnt/work/workspace/spring-patch-git/spring/rts/lib/assimp/../streflop   -o CMakeFiles/assimp.dir/ScenePreprocessor.cpp.o -c /mnt/work/workspace/spring-patch-git/spring/rts/lib/assimp/code/ScenePreprocessor.cpp
/mnt/work/workspace/spring-patch-git/spring/rts/lib/assimp/code/ScenePreprocessor.cpp: In member function void Assimp::ScenePreprocessor::ProcessAnimation(aiAnimation*):
/mnt/work/workspace/spring-patch-git/spring/rts/lib/assimp/code/ScenePreprocessor.cpp:280: error: no matching function for call to min(double&, float)
make[2]: *** [rts/lib/assimp/code/CMakeFiles/assimp.dir/ScenePreprocessor.cpp.o] Error 1
6
задан SpliFF 8 January 2010 в 08:28
поделиться

2 ответа

Попробуйте

std::min<double>(first, key.mTime);

Две аргументы, кажется, имеют разные типы, поэтому компилятор не может разрешить аргумент шаблона на std :: min

edit3: Я на самом деле Посмотрел на библиотеку Assimp и из вашего сообщения об ошибке, это линия 280 из SCENEPREPROCESSOR.CPP Это причина проблем:

anim->mDuration = last - std::min( first, 0. );

Нет ничего плохого в этой строке, однако первым объявлен двойным и 0. означает нулевой двойной буквальный литерал.

Я думаю, что проблема лежит в библиотеке Streflop, кажется, что это неправильно интерпретирует 0. как поплавок литерал.

7
ответ дан 17 December 2019 в 00:10
поделиться

Попытка

std::min<double>(first, key.mTime);

у Этих двух аргументов, кажется, есть различные типы, таким образом, компилятор не может решить аргумент шаблона станд.:: минута

EDIT3: я на самом деле смотрел на assimp библиотеку и из вашего сообщения об ошибке, это - линия 280 из ScenePreprocessor.cpp, это - причина проблем:

anim->mDuration = last - std::min( first, 0. );

нет, ничто неправильно с этой линией однако, первый не объявлено как двойное и 0. означает нулевой двойной литерал.

Я бы предположил, что проблема кроется в библиотеке STREFLOP, кажется, что она неправильно интерпретирует 0. как поплавковый литерал.

-121--4378965-

Может ли эта ошибка быть связана с min () , который является шаблоном и ожидает, что параметры будут одного типа? Сообщение об ошибке предполагает, что в него вставляются двойное и плавающее .
Хотя это не отвечает на ваш вопрос, если min () переопределен, это может помочь в компиляции проблемы.

0
ответ дан 17 December 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: