cocos2d-x3.3 以前版本 工程Xcode6编译时的问题

Undefined symbols for architecture i386:
  "_fwrite$UNIX2003", referenced from:
      _unixErrorHandler in libcocos2dx iOS.a(tif_unix.o)
      _unixWarningHandler in libcocos2dx iOS.a(tif_unix.o)
      _empty_output_buffer in libcocos2dx iOS.a(jdatadst.o)
      _term_destination in libcocos2dx iOS.a(jdatadst.o)
      _Fax3PrintDir in libcocos2dx iOS.a(tif_fax3.o)
      _PredictorPrintDir in libcocos2dx iOS.a(tif_predict.o)
  "_strerror$UNIX2003", referenced from:
      _TIFFOpen in libcocos2dx iOS.a(tif_unix.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Undefined symbols for architecture x86_64:
  "_opendir$INODE64", referenced from:
      _OPENSSL_DIR_read in libcocos2dx iOS.a(o_dir.o)
  "_readdir$INODE64", referenced from:
      _OPENSSL_DIR_read in libcocos2dx iOS.a(o_dir.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

编译在xcode 6.x前没有问题, 在xcode6.x就出现以上报错

解决办法就是在appDelegate.cpp 里面添加一下代码

extern "C"
{

    //新增代码
#if defined (__unix) || (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#ifndef __ENABLE_COMPATIBILITY_WITH_UNIX_2003__
#define __ENABLE_COMPATIBILITY_WITH_UNIX_2003__
#include <stdio.h>
#include <dirent.h>
    FILE *fopen$UNIX2003( const char *filename, const char *mode )
    {
        return fopen(filename, mode);
    }
    size_t fwrite$UNIX2003( const void *a, size_t b, size_t c, FILE *d )
    {
        return fwrite(a, b, c, d);
    }
    char *strerror$UNIX2003( int errnum )
    {

        return strerror(errnum);
    }

    DIR *opendir$INODE64(const char * a)
    {
        return opendir(a);
    }

    struct dirent *readdir$INODE64(DIR *dir)
    {
        return readdir(dir);
    }

#endif
#endif
}
时间: 2024-11-09 04:44:30

cocos2d-x3.3 以前版本 工程Xcode6编译时的问题的相关文章

Cocos2d-x3.1 工程Xcode6编译时的问题

最近遇到的问题,是我同事找到的解决办法,这里记录一下 报错 Undefined symbols for architecture i386: "_fwrite$UNIX2003", referenced from: _unixErrorHandler in libcocos2dx iOS.a(tif_unix.o) _unixWarningHandler in libcocos2dx iOS.a(tif_unix.o) _empty_output_buffer in libcocos2

MISP版本嵌入式QT编译时出现mips-linux-gcc command not found

configure的时候都没什么问题我的configure是:./configure -prefix /opt/qt-jz -xplatform qws/linux-mips-g++ -embedded mips  configure顺利的过了,但是当make的时候,出现了mips-linux-gcc :Commond not fount! 我装的是mipsl-linux-gcc ,而且已经交叉编译过了个hello world了.. make时出现的错误是:make[1]: Entering d

内核模块编译时怎样绕过insmod时的版本检查

1.Uboot:每个arm芯片或者海斯芯片都有各自的uboot. 2.但他们的内核版本可以是一样的,主要是跟各自内核的进行的编译选项有关, 31的内核版本里加了版本检查选项“Kernel type->Symmetrical Multi-Processing”,而21的内核版本没有设置该选项. -------------------------------------------------------------------------------------------------------

转:在支持ARC工程中编译不支持ARC的文件

转:http://blog.csdn.net/duxinfeng2010/article/details/8709697 实践总结:-fno-objc-arc 设置 解决了 旧代码中存在 release autorelease retain 等手动管理内存代码的错误. Xcode4.2(iOS 5)以后启用了ARC技术,虽然4.2以后版本仍然可以不开启ARC,但是我们在建工程的时候有时为了不想管理内存然后就启用了ARC,但是再开发过程中需要用到第三开发类库,而这些第三方类库或是没做更新而不支持A

Android工程的编译过程

现在很多人想对Android工程的编译和打包进行自动化,比如建立每日构建系统.自动生成发布文件等等.这些都需要我们对Android工程的编译和打包有一个深入的理解,至少要知道它的每一步都做了什么,需要什么环境和工具,输入和输出是什么.那么我们就来挖掘一下Android的编译过程中的细节. 首先,我们假定你的系统(什么系统都行,不限于Linux还是Windows系统,当然,我在这里默认使用Linux系统来举例子,但在 Windows中几乎没有什么差别)已经安装了JDK和Android SDK.再假

xcode针对不同IOS版本的代码编译问题

有时候在项目中为了兼容低版本IOS系统,通常会针对不同的OS版本写不同的代码,例如: #define IS_IOS7_OR_LATER ([[UIDevice currentDevice].systemVersion floatValue] >=7.0) if(IS_IOS7_OR_LATER) { [[UINavigationBar appearance] setBarTintColor:[UIColor standardLightGray]]; //IOS7时才有的API } else {

预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)转

vs2010的mfc项目中编译c语言出现错误: "...预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)" 解决方法: 建工程时 建立空项目 或者在项目设置里关闭预编译头的选项! 当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal error C1853: 'pjtname.pch' precompiled

Eclipse使用gradle编译时,设置java home,使用固定的jdk版本进行编译

很多时候我们使用多个版本的jdk,比如说,用的是1.7 ,开发环境用1.8 那么经常碰到编译后的包是1.8版本的,虽然设置了1.7的,因为很多时候我们使用打包工具了. 1.7和1.8有个问题就是1.8 有向下的兼容问题. 比如说ConcurrentHashMap<String, Equip>():使用1.8编译,1.7上跑,使用了keyset遍历,就报错了. java.util.concurrent.ConcurrentHashMap$KeySetView 使用gradle编译时,需要固定jd

基于mipsel编译Qt4.6.2版本(有具体参数和编译时遇到的问题)

1.使用的configure配置为:./configure -embedded mips -little-endian -xplatform qws/linux-mips-g++ -prefix /opt/qte462-mips -release -opensource -confirm-license -webkit -qt-zlib -qt-libpng -qt-libjpeg -qt-gif -I$QTDIR/include/libz -L$QTDIR/lib -no-qt3support