索引
- 日食を構成する
- 発生した問題と解決策
- 付録(ソースコード)
- 参考文献
** 日食の構成 **
C++ バージョンの Eclipse があり、基本的な C++ Cinder プロジェクトが作成されていることを前提としています。.h および .cpp ファイルは、以下の付録にあります。コンパイルするために必要な設定の概要を次に示します。
ステップ1。
- プロジェクトの「プロパティ」ウィンドウを開きます。
- [C/C++ ビルド] > [ビルド変数] オプションに移動します。
次の変数を追加します。
CINDER_PATH /path/to/cinder_0.8.4_mac/
ステップ2。
- [C/C++ ビルド] > [設定] ウィンドウに移動します。
- [ツール] タブで、[MacOS X C++ リンカー] オプションを選択します。
ここで、「コマンド」入力フィールドで、g++ の後にコマンド ライン オプションと OSX フレームワーク リファレンスを追加する必要があります。
g++ -m32 -arch i386 -framework Cocoa -framework IOKit -framework Accelerate -framework AudioToolbox -framework AudioUnit -framework CoreAudio -framework CoreVideo -framework CoreServices -framework QTKit -framework OpenGL -framework QuickTime -framework AppKit -framework Cocoa -framework CoreData -framework Foundation
-m32 64 ビットではなく 32 ビットを使用するようにリンクに指示します。
-arch i386正しいアーキテクチャへのリンクを保証します。
-framework Cinder を実行するために必要なフレームワークを参照します (現在理解しているように)
NOTE: Depending on your mac version you might find -framework Carbon in stead of -framework Cocoa, I used Cocoa.
ステップ 3。
- [MacOS X C++ リンカー] > [ライブラリ] オプションに移動します。
次のライブラリ検索パスを追加します。( -L コマンドライン)
${CINDER_PATH}/lib
${CINDER_PATH}/lib/ios-sim
${CINDER_PATH}/lib/ios
${CINDER_PATH}/lib/macosx
次のライブラリを追加してインクルードします ( -l コマンド ライン)。
cinder
cinder_d
z
png14
pixman-1
cairo
boost_thread
boost_system
boost_filesystem
boost_date_time
cinder-iphone-sim_d
ステップ 4。
「MacOS X C++ Linker」メニューで「Miscellaneous」オプションを選択し、XLinker フィールドに以下を追加します。
${CINDER_PATH}/lib/libcinder_d.a
NOTE: It was adding this option along with the -arch i386 option that resolved this error "undefined symbols for architecture i386:"
ステップ 5。
- [GCC C++ コンパイラ] メニュー オプションを選択します。
「コマンド」フィールドに次を追加します。
g++ -m32 -arch i386
[Includes] メニュー オプションを選択し、次のフォルダー パスを追加します。
${CINDER_PATH}/boost
${CINDER_PATH}/include
/System/Library/Frameworks
** 発生した問題と解決策 **
問題A
make *** Error 1 C/C++ Problem cinder
undefined symbols for architecture i386:
ソリューション A
この問題を解決するには、2 つの要因があることがわかりました。1 つ目は、-m32 および -arch i386 コマンド ライン オプションをリンカーとコンパイラの設定に追加することでした。
2 つ目は、次の -XLinker オプションを含めることです。
${CINDER_PATH}/lib/libcinder_d.a
注: 上記はデバッグ モード用です。リリース用 (_d) に設定する必要があります。
${CINDER_PATH}/lib/libcinder.a
** 付録 **
HelloWorld.h
#include "cinder/app/AppBasic.h"
#include "cinder/gl/gl.h"
using namespace ci;
using namespace ci::app;
using namespace std;
class HelloWorld : public AppBasic {
public:
void setup();
void mouseDown( MouseEvent event );
void update();
void draw();
void prepareSettings(Settings * settings);
};
HellowWorld.cpp
#include "HelloWorld.h"
// You dont' need this when you have the CINDER_APP_BASIC line below.
//int main(int argc, char **argv) {
// return -1;
//}
void HelloWorld::setup()
{
}
void HelloWorld::mouseDown( MouseEvent event )
{
}
void HelloWorld::update()
{
}
void HelloWorld::draw()
{
// clear out the window with black
gl::clear( Color( 0, 0, 0 ) );
}
void HelloWorld::prepareSettings(Settings * settings)
{
settings->setWindowSize( 800, 600 );
settings->setFrameRate( 60.0f );
}
CINDER_APP_BASIC( HelloWorld, RendererGl )
参考文献
すべての功績は、そもそも私を助けてくれたこれらの投稿と、もちろん Cinder の作成者のおかげです。
- Cinder の Eclipse を構成するために従った元のチュートリアル
- 正しくリンクする問題を解決するのに役立ったリンク