我已编译了一个静态库并链接了SQLCipher和OpenSSL。可以在此处找到完整的项目,makefile和编译库:

https://github.com/anujb/SQLCipherNet
.

当我将生成的库链接到正常目标-c Xcode项目中时,对生成的呼叫工作正常。

我使用的是同一库,使用:

-gcc_flags "-L${ProjectDir} -lsqlciphernet -force_load ${ProjectDir}/libsqlciphernet.a"
. 然后我修改了SQLite-Net以调用关键函数,之后每个世代odicetagcode功能:
[DllImport("__Internal", EntryPoint = "sqlite3_key")]
public static extern Result Key(IntPtr db, string key, int keyLength);
.

但是当调用密钥方法时,我得到了一个入门点NotFoundException。这是堆栈跟踪:

System.EntryPointNotFoundException has been thrown at:
at (wrapper managed-to-native) SQLite.SQLite3:Decrypt (intptr,string,int)
at SQLite.SQLiteConnection..ctor (System.String databasePath) [0x00031] in 
../SQLite.cs:108 
.

显然,Stacktrace并不是特别有帮助,但我处于开始调试此问题的地方的损失。halp?

有帮助吗?

解决方案

在构建“debug | iphonesimulator”的解决方案时,我会得到相同的错误。但是,您的项目选项对于此配置,请执行 not ,包括您提到的gcc_flags - 因此异常完全正常。

尝试构建“debug | iPhone”配置(指定选项的位置)由于路径问题而失败......但是如果我修复它们,我很确定它会起作用; - )

更新

将库移动到它的正确位置给我:

Undefined symbols for architecture armv6:   "___udivmodsi4",
referenced from:
      _sqlite3BitvecSet in libsqlciphernet.a(sqlite3.o)
      _sqlite3BitvecClear in libsqlciphernet.a(sqlite3.o)
      _sqlite3BitvecTest in libsqlciphernet.a(sqlite3.o) ld: symbol(s) not found for architecture armv6
.

我相信它因为libopenssl而缺少?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top