Pergunta

Atualmente estou escrevendo um mecanismo de jogo muito simples para uma tarefa e para tornar o código muito mais agradável, decidi usar uma biblioteca matemática vetorial.Um de meus palestrantes me mostrou a biblioteca Sony Vector Math que é usada no mecanismo Bullet Physics e é ótima, pelo que posso ver.Ele está funcionando bem no Linux, mas estou tendo problemas para portá-lo para funcionar no OS X (Intel, Snow Leopard).Incluí os arquivos corretamente em meu projeto, mas a versão C++ da biblioteca parece não compilar.Consigo fazer a versão C da biblioteca funcionar, mas ela tem uma API bastante desagradável em comparação com a versão C++ e o motivo de usar esta biblioteca foi para limpar o código em primeiro lugar.

http://glosx.blogspot.com/2008/07/sony-vector-math-library.html

Esta postagem do blog que encontrei parece sugerir que algo está acontecendo com o compilador.É bastante curto, então não pude extrair muitas informações dele.

Quando tento usar a versão C++ recebo os seguintes erros (visão expandida de cada erro):

/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

segundo erro:

/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

Finalmente dois erros no final do arquivo main.cpp:

Expected '}' at the end of input
Expected '}' at the end of input

Pesquisei de coração no Google, mas não consigo encontrar nenhuma resposta ou algo que me aponte na direção certa, então qualquer ajuda será muito bem recebida.

Obrigado,

Foi útil?

Solução

Qual compilador você está usando no OS X? Existem 4 para escolher na instalação padrão do Xcode 3.2 e o padrão é o GCC 4.2. Você pode estar melhor experimentando o GCC 4.0.

Outras dicas

__forceinline é uma palavra reservada que é suportada por apenas alguns compiladores. Claramente, seu compilador não suporta o __forceinline A palavra-chave e o código em questão não são portáveis.

UMA muito pobre A solução alternativa seria passar um novo definido para o seu compilador que dá à palavra -chave o significado correto. Por exemplo: -D__forceinline=inline ou -D__forceinline=__attribute__((always_inline)) (Obrigado Paul!)

A versão SSE foi considerada apenas para Microsoft Visual Studio.Para outras plataformas (Mac etc) você pode usar a versão escalar.

Bullet\Extras\vectormathlibrary\include\vectormath\scalar\cpp

Parece que alguém corrigiu isso e postou uma versão corrigida em resposta a esta mesma questão.

Agora compatível com GCC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top