链接错误编译/构建Delphi XE7& XE10 Android应用程序(SQLITE3)

时间:2016-02-17 14:02:48

标签: android delphi sqlite android-ndk delphi-xe7

我从我们公司的一名前雇员那里得到了一个项目。

这是一款用Delphi XE7编写的Android应用程序,使用Android SDK 19(4.4)和Sqlite3为智能手机上的本地数据库。

目前我们在智能手机上有一份工作副本,但我无法在我的电脑上编译/构建它。我们需要一个新版本,因为有些事情需要改变我们公司的逻辑。

我总是得到这个致命的错误:

 "[DCC Fatal Error] Linker error code: 1 ($00000001)"

在这个致命的错误之前,我有超过一百个其他错误,看起来几乎一样:

[DCC Error] C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: error: c:\\\\program files (x86)\\\\embarcadero\\\\studio\\\\15.0\\\\lib\\\\Android\\\\Release/libsqlite.a(sqlite3.o): multiple definition of 'sqlite3_aggregate_context'

这个错误的最后两个字总是不同,所以我假设这是sqlite3中的所有不同的类。

我尝试了很多东西,从在Xe7,XE8,XE10中尝试,在SDK Manager中的不同设置,......

我制作了新项目并将文件带到了这个新项目,但我总是遇到同样的错误。

我的SDK Manager设置为:

SDK

Base Path: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk
ZipAlign: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\tools\ZipAlign.exe
Android Location: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\tools\Android.bat
Adb Location: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\platform-tools\Adb.exe
Aapt location: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\build-tools\android-4.4\Aapt.exeµ
SDK Api-level locationC:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\platforms\android-19

NDK

Base Path: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\android-ndk-r9c
arm-linux-androideabi-ld.exe location: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe
arm-linux-androideabi-strip.exe location: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-strip.exe
gdbserver location: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\android-ndk-r9c\prebuilt\android-arm\gdbserver\gdbserver
NDK Api Location: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\android-ndk-r9c\platforms\android-14
C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\android-ndk-r9c\platforms\android-14\arch-arm\usr\lib
Delphi NDK Library Path: C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\android-ndk-r9c\platforms\android-14\arch-arm\usr\lib;C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\android-ndk-r9c\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a

爪哇

KeyTool Location: C:\Program Files\Java\jdk1.7.0_25\bin\KeyTool.exe
Jarsigner Location: C:\Program Files\Java\jdk1.7.0_25\bin\JarSigner.exe

任何人都可以给我一些线索或可能的解决方案。

提前蒂莫西先生

1 个答案:

答案 0 :(得分:1)

我找到了解决方案:

问题是使用了SqliteUniProvider,而在其他文件中,uses子句中仍然存在 dbxsqlite

从我评论第二个(dbxsqlite)的那一刻起,链接错误在编译/构建时消失了。