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 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)

解决方案:

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
    //结束

#include "png.h"
#include "tiffio.h"
#include "base/etc1.h"
#include "jpeglib.h"
}
时间: 2024-10-31 18:04:19

Cocos2d-x3.1 工程Xcode6编译时的问题的相关文章

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_des

【Note2】用keil对工程编译时,工程中已经包含的文件会报错:cannot open source input file usb_conf.h No such file or directory

错误举例: ..\..\Libraries\STM32_USB-FS-Device_Driver\inc\usb_type.h(21): error:  #5: cannot open source input file "usb_conf.h": No such file or directory 这是因为没有设置 STM32 固件库的目录, 编译器就默认到 "Keil"根目录下的某某目录找去了.如果现在编译程序,会报错的 解决方法:引用固件库文件所在的目录需要在

[UE4]工程设置:自动捕获鼠标、通过代码设置鼠标显示隐藏、输入模式、编译时自动保存

一.在4.20版本中运行游戏,在没有进行任何设置的情况下,游戏不会自动捕获鼠标,游戏不会接受输入,需要手动点一下游戏界面才行.如果要跟老版本一样运行游戏自动捕获鼠标,需要进行设置 二.也可以通过代码的方式设置鼠标显示隐藏和输入模式 三.编译时自动保存 原文地址:https://www.cnblogs.com/timy/p/10189754.html

转:在支持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

关于java编译时注解你需要知道的二三事。解除你的顾虑!

转载请注明出处: http://blog.csdn.net/liu470368500/article/details/51316066 做Android开发.大家肯定会关心你的app的性能问题.不知道从何时开始.网上有流传一句.不要使用注解.用注解会影响性能.这不能说错.但是也不能说对.这里普及一下关于注解的一些你需要知道的知识 网上常说的注解.基本是运行时注解.而所说的注解会影响性能.则是指的此类型的注解.因为运行时注解的解析.完全依赖于反射.而反射的效率.是比原生的慢的.特别是对于原先的老机

C++编译时函数名修饰约定规则(很具体),MFC提供的宏,extern &quot;C&quot;的作用

调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法. 1.__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈, 2._cdecl是C和C++程序的缺省调用方式.每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大.函数采用

delphi的bpl、dcp 、dcu文件意义(BPL相当于C++中的DLL,DCP相当于C++中的Lib,编译时需要)

BPL  英文全称 Borland Package library ,是一种特殊的DLL文件,用于代码重用和减少可执行文件.编译bpl时,仅需要添加相应功能的pas文件,如果有窗体,则需要添加dfm文件.既然是DLL文件,那就是在运行时所需要的文件.BPL相当于C++中的DLL DCP  英文全称:delphi compiled package,是 package 编译时跟 bpl 一起产生出来的,记录着 package 中公开的 class.procedure.function.variabl

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

Gtksharp编译时提示下载gtk文件问题

1.昨天晚上新建gtksharp项目之后,安装gtksharp之后,编译时无法成功,提示无法下载gtk-3.24.zip 2.记得前几天,另一个项目可以生成的.就打开老项目.运行.编译成功.那会不会是今天写的代码导致的,注释之后编译还是失败.没办法重新新建一个工程,下载gtksharp包,引用gtk,其它不做任何改动,编译失败.由此今天加的代码不是造成此问题的原因. 3.看下gtksharp.dll版本,发现版本升级了(3.22.25.54 -> 3.22.25.56).立马切换到老版本(3.2