我一直在尝试在我的 android studio c++ 游戏活动项目中使用动态(共享)库,但是我的项目没有成功打开共享库,并且我无法在网上找到任何适合我的东西。共享库是从类型为“共享库(Android、IOS)”的 Visual Studio 项目生成的 .so 文件。我使用的是 Android Studio 版本 17.0.6 和 Visual Studio 2022 版本 17.7.6。我使用的是 Windows 11。 到目前为止,我已尝试在主文件夹中创建一个 jniLibs 文件夹,并放入适当的子文件夹(x86_64、arm64-v8a 等),然后将适当的 .so 文件放入其中。然后,我将库加载到我的 cmake.txt 文件中,该文件可以工作,但是当我尝试在代码中加载库时,它无法加载该库。我用来尝试加载库的代码如下:
add_library(libSharedLibrary SHARED IMPORTED)
set_target_properties(libSharedLibrary PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/SharedLibrary.so)
void callFunctionFromSharedLibrary() {
void* handle = dlopen("C:path/to/SharedLibrary.so", RTLD_LAZY);
if(handle) {
aout << "Successfully loaded shared library" << std::endl;
dlclose(handle);
}
else {
aout << "Failure to load shared library" << std::endl;
}
}
当前代码输出加载失败。我检查了路径是否正确,重新加载并重建了项目,并重新创建了共享库文件。我担心的另一点是 Android Studio IDE 似乎无法识别 .so 文件。我不确定这是否与我在使用 DLL 的 Windows 上有关,或者这是否意味着我不能使用这种类型的共享库。任何信息,将不胜感激。请注意,我是 Android Studio 的初学者,因此将不胜感激详细的解释。
void* handle = dlopen("C:path/to/SharedLibrary.so", RTLD_LAZY);
到
void* handle = dlopen("SharedLibrary.so", RTLD_LAZY);
这允许编程成功加载共享库。