使用的最新master上的 RecastDll,首先发现的问题如下
- CMakeList.txt里面引用的头文件和CPP路径要把去掉的 ../给加回去,否则无法编译
修改完这一步Win64的库已正常编译成功。使用的vs2022
- Android找不到 rand()函数,给加了个宏处理
`/* On Android NDK, rand is inlined function, but postproc needs rand symbol */`
`#if defined(__ANDROID__) `
`#define rand __rand `
`#include <stdlib.h> `
`#undef rand `
` `
`extern int rand(void) `
`{ `
` return __rand(); `
`} `
`#else `
`/* ISO C forbids an empty translation unit. */`
`int vp8_unused; `
`#endif`
- 需要使用NDK-R10E,vs2022里要设置目录,并且 llvm 在vs2022环境下目录不对,将 llvm3.6给改了目录名为 llvm
- 到这一步后就卡住了,不知道如何解决,编译信息如下:
`-- Configuring done`
`-- Generating done`
`-- Build files have been written to: E:/unity/proj/recastnavigation/RecastDll/build_v7a`
`用于 .NET Framework 的 Microsoft (R) 生成引擎版本 17.1.0+ae57d105c`
`版权所有(C) Microsoft Corporation。保留所有权利。`
` ANDROID_HOME=E:\unity\tools\android-sdk`
` ANT_HOME=D:\Program Files\Microsoft Visual Studio\2022\Community\Apps\apache-ant-1.9.3`
` JAVA_HOME=C:\Program Files\Android\jdk\jdk-8.0.302.8-hotspot\jdk8u302-b08`
` NDK_ROOT=E:\unity\tools\android-ndk-r10e`
` ANDROID_HOME=E:\unity\tools\android-sdk`
` ANT_HOME=D:\Program Files\Microsoft Visual Studio\2022\Community\Apps\apache-ant-1.9.3`
` JAVA_HOME=C:\Program Files\Android\jdk\jdk-8.0.302.8-hotspot\jdk8u302-b08`
` NDK_ROOT=E:\unity\tools\android-ndk-r10e`
` InvokeHelper.cpp`
`E:\unity\proj\recastnavigation\RecastDll\Source\InvokeHelper.cpp(94,18): warning : unused variable 'MAX_SMOOTH' [-Wunus`
`ed-const-variable] [E:\unity\proj\recastnavigation\RecastDll\build_v7a\RecastDll.vcxproj]`
` static const int MAX_SMOOTH = 2048;`
` ^`
` 1 warning generated.`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourAlloc.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourAssert.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourCommon.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourNavMesh.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourNavMeshBuilder.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourNavMeshQuery.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourNode.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourCrowd.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourLocalBoundary.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourObstacleAvoidance.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourPathCorridor.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourPathQueue.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourProximityGrid.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourTileCache.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\DetourTileCacheBuilder.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\Recast.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\RecastAlloc.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\RecastArea.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\RecastAssert.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\RecastContour.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\RecastFilter.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\RecastLayers.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\RecastMesh.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\RecastMeshDetail.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\RecastRasterization.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\RecastRegion.o: incompatible target`
` E:\unity\tools\android-ndk-r10e\toolchains\x86_64-4.9\prebuilt\windows-x86_64/lib/gcc/x86_64-linux-android/4.9/../../`
` ../../x86_64-linux-android/bin\ld.exe: error: RecastDll.dir\Release\InvokeHelper.o: incompatible target`
` clang.exe: error: linker command failed with exit code 1 (use -v to see invocation)`
`D:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Application Type\Android\3.0\Android.`
`Common.targets(119,5): error MSB6006: “clang.exe”已退出,代码为 1。 [E:\unity\proj\recastnavigation\RecastDll\build_v7a\RecastD`
`ll.vcxproj]`