3

c Lib API:mycapi.h

typedef struct{
    int  itype;
    double * dx;
    double * dy;
}MyObjInfo;

typedef MyObjInfo * MyObjHandle;

MyObjHandle MyObjInit(const char *pFile);

添加 myapi.h 作为模块

我的快速代码:

import Foundation
import mycapiModule


var h:MyObjHandle = MyObjInit("/home/a")
var o:MyObjInfo = h.memory
////to do somethings
//...
h.destroy()
h = nil
print("\(o.itype)")

所以我的问题是:

  1. 为什么我仍然可以使用o after h.destroy()
  2. 我必须破坏hando吗?
4

1 回答 1

0

不能直接访问。

要访问 C / Cpp 库,请在 Swift 编程语言中使用 XCode 使用以下方式。

添加 main.mm 文件

#import <UIKit/UIKit.h>
#import "ProjectName-swift.h"
//#import "AppDelegate.h"

int main(int argc, char * argv[]) {

 @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

注释 - AppDelegate 中的 @UIApplicationMain

现在通过使用 bridge,您可以访问 C / Cpp 库或直接从 Swift 编程语言访问。

于 2015-12-09T05:23:39.967 回答