链接错误 compiling/Building Delphi XE7 & XE10 Android App (SQLITE3)
Linking Error compiling/Building Delphi XE7 & XE10 Android App (SQLITE3)
我从我们公司的一位前员工那里得到了一个项目。
这是一个用 Delphi XE7 编写的 Android 应用程序,使用 Android SDK 19 (4.4) 和 Sqlite3 作为智能手机上的本地数据库。
目前我们在智能手机上有一个工作副本,但我无法在我的电脑上获得它 compiled/build。我们需要一个新版本,因为我们公司的逻辑需要改变一些东西。
我总是遇到这个致命错误:
"[DCC Fatal Error] Linker error code: 1 ([=13=]000001)"
在这个致命错误之前,我还有一百多个其他错误,看起来都差不多:
[DCC Error] C:\Users\Public\Documents\Embarcadero\Studio.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 管理器中的不同设置,...
我创建了新项目并将文件带到了这个新项目中,但我总是遇到同样的错误。
我的 SDK 管理器设置是:
SDK:
Base Path: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk
ZipAlign: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\tools\ZipAlign.exe
Android Location: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\tools\Android.bat
Adb Location: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\platform-tools\Adb.exe
Aapt location: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\build-tools\android-4.4\Aapt.exeµ
SDK Api-level locationC:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\platforms\android-19
NDK:
Base Path: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\android-ndk-r9c
arm-linux-androideabi-ld.exe location: C:\Users\Public\Documents\Embarcadero\Studio.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.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.0\PlatformSDKs\android-ndk-r9c\prebuilt\android-arm\gdbserver\gdbserver
NDK Api Location: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\android-ndk-r9c\platforms\android-14
C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\android-ndk-r9c\platforms\android-14\arch-arm\usr\lib
Delphi NDK Library Path: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\android-ndk-r9c\platforms\android-14\arch-arm\usr\lib;C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\android-ndk-r9c\sources\cxx-stl\gnu-libstdc++.8\libs\armeabi-v7a
Java:
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
任何人都可以给我一个线索或可能的解决方案。
提前致谢蒂莫西
我找到了解决方案:
问题是使用了 SqliteUniProvider,而在另一个文件中,uses 子句中仍然有一个 dbxsqlite。
从我评论第二个 (dbxsqlite) 的那一刻起,链接错误消失了 compiling/building。
我从我们公司的一位前员工那里得到了一个项目。
这是一个用 Delphi XE7 编写的 Android 应用程序,使用 Android SDK 19 (4.4) 和 Sqlite3 作为智能手机上的本地数据库。
目前我们在智能手机上有一个工作副本,但我无法在我的电脑上获得它 compiled/build。我们需要一个新版本,因为我们公司的逻辑需要改变一些东西。
我总是遇到这个致命错误:
"[DCC Fatal Error] Linker error code: 1 ([=13=]000001)"
在这个致命错误之前,我还有一百多个其他错误,看起来都差不多:
[DCC Error] C:\Users\Public\Documents\Embarcadero\Studio.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 管理器中的不同设置,...
我创建了新项目并将文件带到了这个新项目中,但我总是遇到同样的错误。
我的 SDK 管理器设置是:
SDK:
Base Path: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk
ZipAlign: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\tools\ZipAlign.exe
Android Location: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\tools\Android.bat
Adb Location: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\platform-tools\Adb.exe
Aapt location: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\build-tools\android-4.4\Aapt.exeµ
SDK Api-level locationC:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\platforms\android-19
NDK:
Base Path: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\android-ndk-r9c
arm-linux-androideabi-ld.exe location: C:\Users\Public\Documents\Embarcadero\Studio.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.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.0\PlatformSDKs\android-ndk-r9c\prebuilt\android-arm\gdbserver\gdbserver
NDK Api Location: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\android-ndk-r9c\platforms\android-14
C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\android-ndk-r9c\platforms\android-14\arch-arm\usr\lib
Delphi NDK Library Path: C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\android-ndk-r9c\platforms\android-14\arch-arm\usr\lib;C:\Users\Public\Documents\Embarcadero\Studio.0\PlatformSDKs\android-ndk-r9c\sources\cxx-stl\gnu-libstdc++.8\libs\armeabi-v7a
Java:
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
任何人都可以给我一个线索或可能的解决方案。
提前致谢蒂莫西
我找到了解决方案:
问题是使用了 SqliteUniProvider,而在另一个文件中,uses 子句中仍然有一个 dbxsqlite。
从我评论第二个 (dbxsqlite) 的那一刻起,链接错误消失了 compiling/building。