天天看點

java 如何使用dylib_在 Swift Framework 裡如何調用 dylib 裡的方法?

描述

我有一個 c++ 的動态庫 libfoo.dylib 以及其頭檔案 foo.h 。

我想建立一個 Framework,導入這個動态庫,并想用 Swift 調用或進一步封裝動态庫中的方法,然後暴露封裝好的

Swift 方法。

foo.h 檔案中有類似如下内容:

#include

namespace someNamespace {

struct someStruct;

void someFunction();

enum someEnum { ... };

typedef int someTypedef;

class someClass { ... };

}

我的嘗試

我在 Linked Frameworks and Libraries 中添加了 libfoo.dylib,

并添加 module.map

module MyModule {

header "foo.h"

export *

}

試圖轉換成在 Swift 檔案中能導入的模組,但報錯。

import MyModule // Could not build Objective-C module 'MyModule'

public class MyFramework {

public init() {}

}

同時 foo.h 出現如下錯誤:

#include // 'string' file not found

嘗試添加轉換用的 warpper.h:

#ifdef __cplusplus

extern "C" {

#endif

#import "foo.h"

#ifdef __cplusplus

}

#endif

并修改 module.map 為:

module MyModule {

header "warpper.h"

export *

}

但還是報同樣的錯誤。

問題

我做錯了什麼?

我應該怎麼做才能在我的 Swift 檔案中調用到動态庫中的内容?