SIMD Sony Vector Math Library в OS X с C ++ - PullRequest
3 голосов
/ 03 марта 2010

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

Я погуглил свое сердце, но, похоже, не могунайдите любые ответы или что-нибудь, чтобы указать мне правильное направление, чтобы любая помощь была получена.

Спасибо,

Ответы [ 4 ]

1 голос
/ 20 февраля 2011

Похоже, кто-то исправил это и опубликовал исправленную версию в ответ на эту самую проблему.

Теперь совместим с GCC.

1 голос
/ 03 марта 2010

__forceinline - зарезервированное слово, которое поддерживается только парой компиляторов. Очевидно, ваш компилятор не поддерживает ключевое слово __forceinline, и данный код является непереносимым.

A очень плохой обходной путь - передать новое определение вашему компилятору, которое дает ключевое слово в правильном значении. Например: : -D__forceinline=inline или -D__forceinline=__attribute__((always_inline)) (Спасибо, Пол!)

1 голос
/ 29 октября 2010

Предполагалось, что версия SSE предназначена только для Microsoft Visual Studio. Для других платформ (Mac и т. Д.) Вы можете использовать скалярную версию.

Пуля \ Extras \ vectormathlibrary \ включить \ vectormath \ скалярную \ CPP

0 голосов
/ 03 марта 2010

Какой компилятор вы используете в OS X?В стандартной установке Xcode 3.2 есть 4 варианта, по умолчанию это gcc 4.2.Возможно, вам лучше попробовать gcc 4.0.

...