ctripcorp / SQLlin

A DSL ORM library for Kotlin Multiplatform.
Apache License 2.0
219 stars 10 forks source link

在一些库更新了版本后,目前ios无法运行了 #80

Closed Matcha-xiaobin closed 3 months ago

Matcha-xiaobin commented 3 months ago

不清楚是什么原因导致的,安卓和jvm没问题。 org.jetbrains.compose 1.6.0 这个应该是一个较大的变化,也许是这里的问题?

ld: Undefined symbols:
  _sqlite3_bind_blob, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_bind_blob_wrapper69 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_bind_double, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_bind_double_wrapper71 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_bind_int64, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_bind_int64_wrapper73 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_bind_null, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_bind_null_wrapper74 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_bind_text, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_bind_text_wrapper75 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_bind_zeroblob, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_bind_zeroblob_wrapper80 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_busy_timeout, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_busy_timeout_wrapper22 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_changes, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_changes_wrapper16 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_clear_bindings, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_clear_bindings_wrapper85 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_close_v2, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_close_v2_wrapper7 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_column_blob, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_column_blob_wrapper99 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_column_bytes, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_column_bytes_wrapper106 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_column_count, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_column_count_wrapper86 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_column_double, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_column_double_wrapper100 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_column_int64, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_column_int64_wrapper102 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_column_name, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_column_name_wrapper87 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_column_text, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_column_text_wrapper103 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_column_type, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_column_type_wrapper108 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_db_config, referenced from:
      knifunptr_com_ctrip_sqllin_sqlite314_sqlite3_db_config in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_db_readonly, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_db_readonly_wrapper177 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_errmsg, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_errmsg_wrapper53 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_exec, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_exec_wrapper8 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_finalize, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_finalize_wrapper109 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_last_insert_rowid, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_last_insert_rowid_wrapper14 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_open_v2, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_open_v2_wrapper43 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_prepare16_v2, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_prepare16_v2_wrapper61 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_reset, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_reset_wrapper110 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
  _sqlite3_step, referenced from:
      _com_ctrip_sqllin_sqlite3_sqlite3_step_wrapper97 in composeApp[47](libcom.ctrip.kotlin:sqllin-driver-cinterop-sqlite3-cache.a.o)
clang: error: linker command failed with exit code 1 (use -v to see invocation)

warning: Run script build phase 'Compile Kotlin Framework' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'iosApp' from project 'iosApp')
** BUILD FAILED **
qiaoyuang commented 3 months ago

这个我之前也没遇到过,看起来像 link 的问题。等我这阵子忙完再看,你可以在社区里问一下其他开发者有没有遇到类似的问题

Matcha-xiaobin commented 3 months ago

image

在Xcode中添加这个,即可成功运行到ios模拟器上。

参考来源: https://github.com/cashapp/sqldelight/issues/1442#issuecomment-523435492

Matcha-xiaobin commented 3 months ago

我不记得是不是之前就存在ios运行不起来的问题了,但现在我想让ios平台运行起来。 ios现在能打包安装上,却无法正确运行,即使我注释掉 调用数据库的初始化方法 相关的代码,依然会报错: Caused by: com.ctrip.sqllin.driver.SQLiteResultCode: unable to open database file | error code SQLITE_CANTOPEN

我确信我注释掉了所有初始化数据库的代码 image

以下是我使用的kotlin和ksp版本

kotlin = "2.0.0-Beta4"

kotlin = "1.9.23"

ksp = "2.0.0-Beta4-1.0.19"

ksp = "1.9.23-1.0.19"

等您有时间了,麻烦帮看下什么问题。

qiaoyuang commented 3 months ago

从你的报错来看,这个是 SQLite 的本身的问题,跟 SQLlin 无关,可以参考 SQLite 的错误码,结合代码自己寻找解决方案:https://www.sqlite.org/rescode.html#cantopen,这类问题网上随便一搜就有。其次,仅凭截图,在无法看到你全部代码的情况下,我肯定是无法定位问题的,建议您本地多尝试并进行 debug,如果确定是 SQLlin 的问题,您可以提交 issue 并详细描述问题,比如提供最小可复现问题的 demo,我这边会在空闲的时候进行修复。

Matcha-xiaobin commented 3 months ago

确实不是你这边的问题,我去用了下 sqldelight,也是一样的问题 日志这边打印也是同样的错误,并且Database full path都直接是数据库的 名字.db 没有前面的路径 image

看起来像是这个路径不能读写