3

私はしばらくSFMLを機能させようとしてきましたが、GCCを使用して機能させようとしています。ちなみにOS Xです。標準の Linux の指示に従い、Linux 64 ビットのダウンロードを使用しましたが、コンパイルに関しては...

g++ -o testing main.cpp -lsfml-system

これが起こります:

main.cpp: In function ‘int main()’:
main.cpp:7: error: ‘class sf::Clock’ has no member named ‘GetElapsedTime’
main.cpp:9: error: ‘class sf::Clock’ has no member named ‘GetElapsedTime’
main.cpp:10: error: ‘Sleep’ is not a member of ‘sf’

インクルードを使用していないことが原因である可能性があると考えたので、gcc compile コマンドを次のように変更しました。

 g++ -o testing main.cpp -I ~/SFML-1.6/include/ -lsfml-system

そして今、私はこのエラーが発生しています:

ld: warning: ignoring file /usr/local/lib/libsfml-system.so, file was built for     unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
  "sf::Clock::Clock()", referenced from:
      _main in ccZEiB7b.o
  "sf::Clock::GetElapsedTime() const", referenced from:
      _main in ccZEiB7b.o
  "sf::Sleep(float)", referenced from:
      _main in ccZEiB7b.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status**

そして、それを修正するために何をすべきかわかりません。

4

2 に答える 2

2

簡潔な答え

-arch i386(Mac の場合) または-m32(Linux の場合) フラグを追加します。

長い答え

プログラムを 64 ビットでコンパイルしようsfml-systemとしているのに、ライブラリは 32​​ ビットでビルドされています。したがって、プログラムはライブラリにリンクできません。

可能であれば 64 ビットで SFML を再コンパイルすると、プログラムを 64 ビットでコンパイルできるはずです。

于 2012-04-11T18:25:50.623 に答える
0

SFMLは、OS Xでフレームワークを使用することを想定しています。SFMLフォルダーを開き、lib64の下のすべてのフォルダーを/ Library / Frameworksにコピーします(つまり、SFML.framework、sfml-system.frameworkなどを/ Library / Frameworksにコピーします)。

フレームワークをインストールしたら、次のように-frameworkコマンドをg++に渡すことでフレームワークを使用できます。

g++ -o testing main.cpp -framework SFML -framework sfml-system
于 2012-04-11T23:25:40.703 に答える