将 leveldb-library.framework 用于 iOS 和 Xcode9

Use leveldb-library.framework from firebase for iOS with Xcode9

我希望能够使用 leveldb-library.framework,google 随其 firebase iOS SDK 一起提供。我好像导入不了框架

我做了什么: 1: 复制 leveldb-library.framework 到项目目录 2: 在 Xcode > Target > Linked Frameworks and Libraries [+] 添加框架

3:确保header搜索路径设置正确

4: 添加一个 Objective-C++ 包装器 class 并导入 leveldb headers

出现链接器错误:

/Users/ronny/projects/clients/internal/TestCD/TestCD/LevelDB.mm:11:9: fatal error: 'leveldb/db.h' file not found
#import "leveldb/db.h"
        ^~~~~~~~~~~~~~
1 error generated.

框架中的Headers目录提供了所有header:db.h、options.h但没有"leveldb"parent目录.

将导入更改为以下内容会引发相同的错误:

#import <leveldb/db.h>
#import <leveldb/options.h>

一旦我将导入更改为:

#import <leveldb-library/db.h>
#import <leveldb-library/options.h>

链接器能够找到包含但抛出另一个错误:

In file included from /Users/ronny/projects/clients/internal/TestCD/TestCD/LevelDB.mm:11:
/Users/ronny/projects/clients/internal/TestCD/leveldb-library.framework/Headers/db.h:10:10: fatal error: 'leveldb/iterator.h' file not found
#include "leveldb/iterator.h"
         ^~~~~~~~~~~~~~~~~~~~
1 error generated.

在这一点上,我不再确定可以做些什么来解决这个问题。添加导入路径也无济于事。 Xcode 这样完成导入:

任何解决此问题的建议都将不胜感激。该项目可以在这里找到:https://github.com/ronnyf/TestCD

该框架预期称为 leveldb,但您的示例将其称为 leveldb-library

mv leveldb-library.framework leveldb.framework
mv leveldb.framework/leveldb-library leveldb.framework/leveldb

使用重命名的框架更新 Xcode 项目并成功构建。