相关疑难解决方法(0)

什么是应用程序二进制接口(ABI)?

我从未明白ABI是什么.请不要指向维基百科的文章.如果我能理解它,我就不会在这里张贴这么长的帖子.

这是我对不同界面的看法:

电视遥控器是用户和电视之间的接口.它是一个现有实体,但本身无用(不提供任何功能).遥控器上每个按钮的所有功能都在电视机中实现.

接口:它是间"现有实体"层 functionalityconsumer的该功能.接口本身不起作用.它只是调用后面的功能.

现在取决于用户是谁,有不同类型的接口.

命令行界面(CLI)命令是现有实体,消费者是用户和功能所在.

functionality: 我的软件功能解决了我们描述这个界面的一些目的.

existing entities: 命令

consumer: 用户

图形用户界面(GUI)窗口,按钮等是现有实体,消费者再次是用户和功能所在.

functionality: 我的软件功能解决了我们描述这个界面的一些问题.

existing entities: 窗口,按钮等..

consumer: 用户

应用程序编程接口(API)函数(或更正确的)接口(在基于接口的编程中)是现有实体,这里的消费者是另一个程序而不是用户,并且该层后面的功能也是如此.

functionality: 我的软件功能解决了我们描述这个界面的一些问题.

existing entities: 函数,接口(函数数组).

consumer: 另一个程序/应用程序

应用程序二进制接口(ABI)这是我的问题开始的地方.

functionality: ???

existing entities: ???

consumer: ???

  • 我用不同的语言编写了软件并提供了不同类型的接口(CLI,GUI和API),但我不确定我是否提供过任何ABI.

维基百科说:

ABI涵盖了诸如此类的详细信息

  • 数据类型,大小和对齐方式;
  • 调用约定,它控制函数参数的传递方式并返回检索的值;
  • 系统调用号码以及应用程序应如何向操作系统进行系统调用;

其他ABI标准化细节,如

  • C++名称错误,
  • 异常传播,和
  • 在同一平台上调用编译器之间的约定,但不需要跨平台兼容性.
  • 谁需要这些细节?请不要说操作系统.我知道汇编编程.我知道链接和加载是如何工作的.我确切地知道里面发生了什么.

  • 为什么C++名称输入?我以为我们正在谈二进制.语言为什么会进来?

无论如何,我已经下载了[PDF] System V Application Binary Interface Edition 4.1(1997-03-18),看看它究竟包含了什么.好吧,大部分都没有任何意义.

  • 为什么它包含两章(第4和第5章)来描述ELF文件格式?实际上,这些是该规范中仅有的两个重要章节.其余章节是"处理器特定的".无论如何,我认为这是一个完全不同的话题.请不要说ELF文件格式规范 ABI.根据定义,它不符合接口的条件.

  • 我知道,因为我们谈论的水平很低,所以必须非常具体.但我不确定它是如何"指令集架构(ISA)"具体的?

  • 我在哪里可以找到Microsoft Windows的ABI?

所以,这些是困扰我的主要问题.

compiler-construction api binary operating-system abi

444
推荐指数
11
解决办法
10万
查看次数

使用Xcode获取错误"没有这样的模块",但框架就在那里

我目前在Swift编码,我有一个错误:

没有这样的模块社交

但我不明白,因为模块在我的项目中,在"链接框架和库"和"嵌入式二进制文件"中声明.

框架在Objective-C中,所以我为它编写了一个Bridge Header.

请问,我如何让Xcode识别框架?

错误模块

项目

链接框架,库

标题桥

xcode ios swift

303
推荐指数
27
解决办法
35万
查看次数

不能在Objective-C中使用Swift类

我尝试Swift在我的app中集成代码.我的应用程序是写入的Objective-C,我添加了一个Swift类.我做了这里描述的所有事情.但我的问题是Xcode没有创建-Swift.h文件,只有桥接头.所以我创造了它,但它实际上是空的.我可以在Swift中使用我所有的ObjC类,但我不能这样做.我标记了我的快速课程,@objc但没有帮助.我现在能做什么?

编辑:Apple说:"当您将Swift代码导入Objective-C时,您依靠Xcode-generated头文件将这些文件暴露给Objective-C.[...]此标题的名称是您的产品模块名称,然后添加" -Swift.h"."

现在,当我想导入该文件时,它会出错:

    //MainMenu.m

    #import "myProjectModule-Swift.h" //Error: 'myProjectModule-Swift.h' file not found

    @implementation MainMenu
Run Code Online (Sandbox Code Playgroud)

这是我的FBManager.swift文件:

@objc class FBManager: NSObject {

    var descr = "FBManager class"

    init() {
        super.init()
    }

    func desc(){
        println(descr)
    }

    func getSharedGameState() -> GameState{
        return GameState.sharedGameState() //OK! GameState is written in Objective-C and no error here
    }
}
Run Code Online (Sandbox Code Playgroud)

objective-c ios swift

251
推荐指数
12
解决办法
15万
查看次数

dyld:未加载库:@ rpath/libswift_stdlib_core.dylib

将Swift类添加到旧的Xcode项目后,我收到此错误.

dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib

如何让项目再次运行?

dyld swift

203
推荐指数
10
解决办法
6万
查看次数

图书馆?静态的?动态?还是框架?项目在另一个项目内

我有一个现有的iOS应用程序,并希望添加一大块代码,我一直在开发另一个项目,以方便测试.新的块基本上处理将图像保存到各种共享服务等.因为共享代码需要大量的测试和未来的更新,我想知道将代码块合并到我现有的应用程序中的最佳方法是什么.

我不知道它应该是静态库,动态库还是框架,老实说,我不确定区别是什么,或者我应该如何去做它并在Xcode中设置它.

我所知道的是,我需要/想要为共享代码保留单独的测试和更新应用程序,并让主应用程序使用它.

如果你还不能说,我不是一个git wiz.我只是一个简单的单人开发人员.

任何帮助或方向将不胜感激.谢谢!

xcode frameworks static-libraries ios

132
推荐指数
2
解决办法
5万
查看次数

如何从Swift调用C?

有没有办法从Swift调用C例程?

很多iOS/Apple库只是C,我仍然希望能够调用它们.

例如,我希望能够从swift调用objc运行时库.

特别是,如何桥接iOS C标头?

c swift

132
推荐指数
3
解决办法
6万
查看次数

将Project-Swift.h导入到Objective-C类...找不到文件

我有一个在Objective-C中启动的项目,我试图将一些Swift代码导入到我之前编写的Objective-C相同的类文件中.

我在同一个项目中咨询过Apple Sws和Objective-C的文档,以及这样的SO 问题,但仍然无济于事:我在放入后继续得到文件未找到错误#import "NewTestApp-Swift.h"(NewTestApp是产品的名称)和模块).

这是我到目前为止所做的:

  1. Define Modules,YES为应用程序选择.
  2. 确保产品模块名称中没有任何空格(请参阅下面的问题截图)

我已经尝试使用#import "NewTestApp-Swift.h"ViewController.m,ViewController.hAppDelegate.m但他们没有工作过.

我还做错了什么?谢谢你的帮助.


设置截图:

在此输入图像描述


我目前遇到的错误:

在此输入图像描述

xcode objective-c ios swift xcode6

115
推荐指数
7
解决办法
8万
查看次数

如何使用ios swift将字符串转换为MD5哈希

我想转换用户输入或假设任何字符串如"abc"到MD5哈希.我想在ios swift中这样做.我已经提到了以下链接,但解决方案对我不起作用,或者我很困惑,因为我是快速编程的新手,所以我很难实现它.有人可以通过明确的步骤来帮助我实现这一目标.提前致谢!

在Swift框架中导入CommonCrypto

如何在swift语言中使用CC_MD5方法.

http://iosdeveloperzone.com/2014/10/03/using-commoncrypto-in-swift/

为了更清楚,我希望像在php中一样快速实现这一点.

$str = "Hello";

echo md5($str);
Run Code Online (Sandbox Code Playgroud)

输出:8b1a9953c4611296a827abf8c47804d7

md5 ios swift

96
推荐指数
10
解决办法
7万
查看次数

何时在swift代码中使用@objc?

我是swift的新手,我看到一些方法,如:

@objc private func doubleTapGestureRecognized(recognizer: UITapGestureRecognizer)
Run Code Online (Sandbox Code Playgroud)

我想知道什么时候使用@objc?我读了一些文档,但是他们说当你希望它在Objective-C中可以调用时,你应该添加@objc标志

但是,这是一个快速的私有函数,@ obj做了什么?

private objective-c selector ios swift

74
推荐指数
5
解决办法
4万
查看次数

什么是伞头?

什么是伞头?有什么用?我收到了一个警告,如下所示.这是什么意思?

<module-includes>:1:1: warning: umbrella header for module 'XCTest' does not include header 'XCTextCase+AsynchronousTesting.h' [-Wincomplete-umbrella]
#import "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework/Headers/XCTest.h"
Run Code Online (Sandbox Code Playgroud)

objective-c ios

65
推荐指数
2
解决办法
2万
查看次数