Вопрос

В настоящее время я пишу очень простой игровой движок для задания, и чтобы сделать код намного приятнее, я решил использовать векторную математическую библиотеку.Один из моих лекторов показал мне библиотеку 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top