Библиотека векторной математики SIMD Sony в OS X с C ++
-
23-09-2019 - |
Вопрос
В настоящее время я пишу очень простой игровой движок для задания, и чтобы сделать код намного приятнее, я решил использовать векторную математическую библиотеку.Один из моих лекторов показал мне библиотеку Sony Vector Math library, которая используется в физическом движке Bullet, и, насколько я могу судить, она великолепна.У меня это прекрасно работает в Linux, но у меня возникли проблемы с переносом его для работы на OS X (intel, Snow Leopard).Я правильно включил файлы в свой проект, но версия библиотеки на C ++, похоже, не компилируется.Я могу заставить C-версию библиотеки работать, но у нее довольно неприятный API по сравнению с версией C ++, и вся причина использования этой библиотеки заключалась в том, чтобы в первую очередь доработать код.
http://glosx.blogspot.com/2008/07/sony-vector-math-library.html
Этот пост в блоге, на который я наткнулся, кажется, наводит на мысль, что что-то не так с компилятором?Она довольно короткая, так что я не смог извлечь из нее много информации.
Когда я пытаюсь использовать версию C ++, я получаю следующие ошибки (расширенный вид каждой ошибки):
/usr/include/vectormath/cpp/../SSE/cpp/vectormath_aos.h:156:0
/usr/include/vectormath/cpp/../SSE/cpp/vectormath_aos.h:156:
error: '__forceinline' does not name a type
вторая ошибка:
/Developer/apps/gl test/main.cpp:7:0 In file included from /Developer/apps/gl test/main.cpp
/usr/include/vectormath/cpp/vectormath_aos.h:38:0 In file included from
/usr/include/vectormath/cpp/vectormath_aos.h
/usr/include/vectormath/cpp/../SSE/cpp/vectormath_aos.h:330:0 In file included from
/usr/include/vectormath/cpp/../SSE/cpp/vectormath_aos.h
/usr/include/vectormath/cpp/../SSE/cpp/vecidx_aos.h:45:0 Expected constructor, destructor,
or type conversion before '(' token in /usr/include/vectormath/cpp/../SSE/cpp/vecidx_aos.h
Наконец две ошибки в конце main.cpp файл:
Expected '}' at the end of input
Expected '}' at the end of input
Я погуглил изо всех сил, но, похоже, не могу найти никаких ответов или чего-либо, что указало бы мне правильное направление, так что любая помощь будет принята с благодарностью.
Спасибо,
Решение
Какой компилятор вы используете в OS X ?В стандартной установке Xcode 3.2 есть 4 варианта на выбор, а по умолчанию используется gcc 4.2.Возможно, вам лучше попробовать gcc 4.0.
Другие советы
__forceinline
это зарезервированное слово, которое поддерживается только парой компиляторов.Очевидно, что ваш компилятор не поддерживает __forceinline
ключевое слово и код, о котором идет речь, непереносимы.
A очень бедный обходным решением было бы передать вашему компилятору новое определение, которое придает ключевому слову правильное значение. Например.: -D__forceinline=inline
или -D__forceinline=__attribute__((always_inline))
(Спасибо, Пол!)
Предполагалось, что версия SSE предназначена только для Microsoft Visual Studio.Для других платформ (Mac и т.д.) вы можете использовать скалярную версию.
Пуля\Дополнительно\vectormathlibrary\включить\vectormath\скалярный\cpp
Похоже, кто-то это исправил и опубликовал исправленная версия в ответ на этот самый вопрос.
Теперь совместим с GCC.