gpt4 book ai didi

ios - Xcode 构建错误 - "Implicit declaration of function ‘sqlite3_key’ 在 C99 中无效”

转载 作者:行者123 更新时间:2023-11-29 05:12:45 25 4
gpt4 key购买 nike

我正在将一个大型 iOS 应用程序模块化,比如将 MyAppWithDatabase 分成两个模块(即项目)。因此,我将在同一工作区 MyApp.xcworkspace 下将一个主项目 MyApp 作为主机,并将链接的 MyDataPlatform 作为框架。当SQLCipher pod已针对目标 MyAppWithDatabase 集成,它工作得很好,但由于在重构中所有数据库相关代码都被移至 MyDataPlatform 框架中,我想集成 SQLCipher code> pod 仅用于框架,以保持内部加密机制从主机应用程序中抽象出来。现在,当我集成框架时,它开始产生以下构建错误。

Implicit declaration of function ‘sqlite3_key’ is invalid in C99

请注意,此问题是由 MyApp 源代码的一条语句作为警告产生的,但 Xcode 构建将其视为错误,

sqlite3_key(_db, [password UTF8String], (int)password.length);

我的上述行仍然保留在 MyApp 中,因为将数据库相关代码逐渐移至 MyDataPlatform 需要时间,并且我假设 SQLCipher header 仍然可用在主机应用程序中作为链接中的相关框架。

我已经经历了许多建议solutions在互联网上,但它们都不适合我的情况。我怀疑大多数解决方案是否仅针对主机应用程序集成SQLCipher。当我遇到框架错误时,我该怎么办?

下面是我的 pod 文件的结构(重构后),

# Uncomment this line to define a global platform for your project
platform :ios, '9.0'

workspace 'MyApp.xcworkspace'

target 'MyApp' do
# Uncomment this line if you're using Swift or would like to use dynamic frameworks
use_frameworks!

pod 'Google/Analytics'
pod 'GoogleMaps'
# ...

target 'MyAppTests' do
inherit! :search_paths
end

end

target 'MyDataPlatform' do
project 'MyDataPlatform/MyDataPlatform.xcodeproj'
pod 'SQLCipher', '~>3.4.2'

#https://discuss.zetetic.net/t/ios-11-xcode-issue-implicit-declaration-of-function-sqlite3-key-is-invalid-in-c99/2198/53
post_install do | installer |
print "SQLCipher: link Pods/Headers/sqlite3.h"
system "mkdir -p Pods/Headers/Private && ln -s ../../SQLCipher/sqlite3.h Pods/Headers/Private"
end
end

以前 SQLCipher 集成在 MyAppWithDatabase 下,即

# Uncomment this line to define a global platform for your project
platform :ios, '9.0'

target 'MyAppWithDatabase' do
# Uncomment this line if you're using Swift or would like to use dynamic frameworks
use_frameworks!

pod 'Google/Analytics'
pod 'GoogleMaps'
pod 'SQLCipher', '~>3.4.2'
# ...

target 'MyAppWithDatabaseTests' do
inherit! :search_paths
end

end

最佳答案

在应用程序中定义SQLITE_HAS_CODEC后,我的问题得到了解决,

MyApp -> Build Settings -> Other C Flags

在应用程序中添加 SQLITE_HAS_CODEC=1 后,另一个解决方案也可以工作,

MyApp -> Build Settings -> Preprocessor Macros

关于ios - Xcode 构建错误 - "Implicit declaration of function ‘sqlite3_key’ 在 C99 中无效”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59525583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com