指数
- 配置日食
- 遇到的问题和解决方法
- 附录(源代码)
- 参考
** 配置 Eclipse **
假设您有一个 C++ 版本的 eclipse 并且已经创建了一个基本的 C++ Cinder 项目。您可以在下面的附录中找到 .h 和 .cpp 文件。下面概述了编译时需要配置的设置。
第1步。
- 打开项目“属性”窗口。
- 导航到 C/C++ Build > 'Build Variables' 选项。
添加以下变量。
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告诉链接使用 32 位而不是 64 位。
-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
选择“包含”菜单选项并添加以下文件夹路径
${CINDER_PATH}/boost
${CINDER_PATH}/include
/System/Library/Frameworks
**遇到的问题及解决方案**
问题A
make *** Error 1 C/C++ Problem cinder
undefined symbols for architecture i386:
解决方案 A
我发现克服这个问题有两个促成因素。第一个是将 -m32 和 -arch i386 命令行选项添加到链接器和编译器设置中。
第二个是包含以下 -XLinker 选项
${CINDER_PATH}/lib/libcinder_d.a
注意:以上是调试模式,(_d)发布你必须将它设置为
${CINDER_PATH}/lib/libcinder.a
** 附录 **
你好世界.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 的原始教程
- 帮助解决正确链接问题的链接