我正在使用Visual C ++ 2015中的新跨平台工具为Android构建本机共享库。
我在安装VS2015之前安装了NDK(r10d),因此我选择不在VS的辅助安装程序中安装NDK。相反,安装后我将NDK路径设置为Tools > Options > Cross Platform > Android
。
我遇到了VS没有找到工具链二进制文件的问题 - 它在arm-linux-androideabi-gcc.exe
下寻找[NDK_ROOT]\toolchains\arm-linux-androideabi-4.9\prebuilt\windows\bin
,而在我的安装中文件位于[NDK_ROOT]\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin
。为了解决这个问题,我只是将 windows-x86_64 目录重命名为 windows 。
现在的问题是构建错误不会传播到错误列表视图。相反,我在错误列表中收到一个错误:
Severity Code Description Project File Line Source
Error MSB6006 "arm-linux-androideabi-gcc.exe" exited with code 1. pexeso-android C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Application Type\Android\1.0\Android.Common.targets 194 Build
我可以查看实际错误的唯一地方是输出窗口:
ANDROID_HOME=C:\Dev\Android\android-sdk
ANT_HOME=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Apps\apache-ant-1.9.3\
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_05
NDK_ROOT=C:\Dev\Android\android-ndk-r10d
pch.h
PexesoAndroid.cpp
PexesoAndroid.cpp: In function 'jint JNI_OnLoad(JavaVM*, void*)':
PexesoAndroid.cpp:7:9: warning: unused variable 'jcPexeso' [-Wunused-variable]
jclass jcPexeso;
^
PexesoAndroid.cpp: In constructor 'PexesoAndroid::PexesoAndroid(JNIEnv*)':
PexesoAndroid.cpp:26:2: error: invalid conversion from 'void (*)(jstring) {aka void (*)(_jstring*)}' to 'void*' [-fpermissive]
};
^
PexesoAndroid.cpp:24:18: warning: unused variable 'method_table' [-Wunused-variable]
JNINativeMethod method_table[] = {
^
PexesoAndroid.cpp: In function 'jint JNI_OnLoad(JavaVM*, void*)':
PexesoAndroid.cpp:15:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
但是这个视图是没用的,因为,例如,我不能双击错误并让IDE跳转到相关的行和源文件。
当他们说VS将跨平台时,这真的是他们的意思吗?