bog*_*gen 6 xcode frameworks ios
我正在尝试编写一个开源应用程序来展示如何在Swift中编写客户端+服务器代码.源代码位于:https://github.com/haaakon/QuizWorld(简称QW)
该应用程序使用的框架位于:https://github.com/haaakon/QuizWorld-API(QWAPI)以访问API.我已将QWAAPI作为项目导入到QW应用程序中,它在模拟器中运行良好,但在运行测试时,由于此错误,它无法编译:
Undefined symbols for architecture x86_64:
"QuizWorld.QuestionViewModel.__allocating_init () -> QuizWorld.QuestionViewModel", referenced from
Run Code Online (Sandbox Code Playgroud)
这只是测试中的一行代码:
let a = QuestionViewModel()
Run Code Online (Sandbox Code Playgroud)
这意味着测试目标无法正确获取导入的模块.导入为:
@testable import QuizWorld
@testable import QuizWorldAPI
import Prelude
import ReactiveSwift
import ReactiveExtensions
import Result
Run Code Online (Sandbox Code Playgroud)
我已经尝试添加很多不同的导入,即使对于API框架中使用的框架,但似乎没有什么能解决这个问题.QW-Tests目标还具有正确的目标依赖关系设置.任何人都有一个线索,我可以在这附近吗?所有代码都是链接到的repos中的开源代码.
在您的测试目标中,您没有设置任何内容Test Host并Bundle loader构建设置.在链接阶段,它基本上失败(不知道从哪里开始)加载符号.目标依赖关系只说明之前应该构建的内容,"使用库链接二进制"对动态框架没有影响.
在测试目标中设置以下构建设置:
Test Host: $(BUILT_PRODUCTS_DIR)/QuizWorld.app/QuizWorld
Bundle Loader: $(TEST_HOST)
Run Code Online (Sandbox Code Playgroud)
后者的文档:
指定将加载要链接的包输出文件的可执行文件.捆绑包中的未定义符号将根据指定的可执行文件进行检查,就像捆绑包所链接的动态库之一一样.
我在你的项目上试过这个并且它有效.
UPD:在你的第二次提交"第一次测试的设置"中你已经删除了这些行,所以你可能只是反向删除那些单独的行.
UPD2:关于您的一般项目设置.尝试在真实设备上运行您的应用程序,使用此设置,它将无法找到QWAPI项目中包含的第三方框架,因为它们不会自动复制.您需要设置"复制框架"构建阶段,以确保将动态框架复制到应用程序包中.
| 归档时间: |
|
| 查看次数: |
1264 次 |
| 最近记录: |