Swift编程问题

来源:互联网 发布:淘宝独立设计师店铺 编辑:程序博客网 时间:2024/06/06 18:07

1、Swift工程导入第三方SDK(.a,.h)时 提示无法找到标准C++中的关键字、函数等

异常信息:

clang: error: linker command failed with exit code 1 (use -v to see invocation)

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

解决办法:在Build Phases选项卡的Link Binary With Libraries中,增加以下依赖:

这里写图片描述

注意:如果是Xcode 7.0之后的版本,需要添加libc++.tdb,libz.tdb;    

        如果是Xcode 7.0之前的版本,需要添加libc++.dylib,libz.dylib;


2、 .m文件.mm文件编写代码注意

在文件PeerCallback.h头文件中定义函数 :   

        // 登录并获取本地SDP

        int loginAndGetLocalSDP();

        在文件PeerCallback.mm文件中实现函数 :

// 登录并获取本地SDP

int loginAndGetLocalSDP()

return 33;

}

在swfit文件中调用,函数 : loginAndGetLocalSDP(), 提示下述错误, 无法找到函数 _loginAndGetLocalSDP()

Undefined symbols for architecture x86_64:

  "_loginAndGetLocalSDP", referenced from:

      __T07JsvaApp14ViewControllerC12onPlayActionyypF in ViewController.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)


   原因, .mm文件内允许c++代码存在,因此按照std c++ 编译,会函数对外暴露的名字。 这时需要改为.m文件,按照c语言编译不会改名。