c++ - visual c++ 跨平台android : Include prebuilt shared library

标签 c++ visual-studio visual-studio-2015 android-ndk ndk-build

我正在使用适用于 Android 的 Visual C++ 跨平台工具,如下所述:https://msdn.microsoft.com/en-us/library/dn707591.aspx

到目前为止一切正常(我可以在我的手机上构建和运行文件 -> 新项目 -> 跨平台 -> Android 下的模板)。但是,我找不到如何将我的应用链接到 *.so 文件形式的预构建共享库

到目前为止,我尝试了以下步骤:

第一步

为了测试 Visual Studio 链接到预建共享库的能力,我创建了一个小型共享库,如下所示:

共享库.cpp:

#include "SharedLibrary.h"

const char * SharedLibrary::GetString()
{
    return "Hello from Shared Library";
}

void SharedLibrary()
{
}

SharedLibrary::SharedLibrary()
{
}

SharedLibrary::~SharedLibrary()
{
}

共享库.h:

#pragma once

class SharedLibrary
{
public:
    const char * GetString();
    SharedLibrary();
    ~SharedLibrary();
};

Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := SharedLibrary
LOCAL_SRC_FILES := SharedLibrary.cpp
include $(BUILD_SHARED_LIBRARY)

第 2 步

然后我使用命令 ndk-build 编译了这个共享库,这给了我一个文件 libSharedLibrary.so

第 3 步

然后我创建了一个 Visual Studio 项目:File -> New -> Project -> Cross Platform -> Android -> Basic Application (Android, Ant)。该项目编译并运行良好。

第四步

下一步是我遇到的问题:我需要以某种方式将 libSharedLibrary.so 文件链接到 Visual Studio 项目。我在 Visual Studio 项目的项目选项中找不到任何允许我这样做的东西。

所以,这是我的问题: 我必须如何设置我的 Visual C++ 跨平台 Android 项目才能将共享对象 (*.so) 链接到它?

这是我在 stackoverflow 上的第一篇帖子,如果我在帖子中做错了什么,请随时纠正我。

最佳答案

在投入大量时间后,我找到了解决方案(感谢 Microsoft 没有在任何地方记录此功能...):

  • 打开 Visual Studio 解决方案
  • 转到 Android 打包项目
  • 右键单击项目,然后选择“添加”->“新建文件夹”
  • 将新文件夹命名为“libs”(此命名是强制性的!)
  • 为每个目标处理器架构创建一个子文件夹(例如“armeabi-v7a”)
  • 将相应的 *.so 文件拖放到这些子文件夹中

编译项目时,“libs”文件夹及其内容被复制到编译后的 *.apk 文件中。

希望这对某些人有所帮助!

关于c++ - visual c++ 跨平台android : Include prebuilt shared library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40307291/

相关文章:

java - 将 C++ 对象实例存储在 JNI jobject 中并稍后检索

c++ - 用自身初始化 C++ const 变量

c++ - OpenGL 立方体的纹理不正确

c++ - std::ostringstream 到 LPCSTR?

c++ - Visual Studio : Not found resources下的C/C++项目

visual-studio-2015 - VS2015 在编辑源代码时崩溃并显示 "A new guard page..."

asp.net - 在 Visual Studio 解决方案中创建实际的物理文件夹

c++ - 无法正确打印一种图案

c++ - 链接器说 _IsolationAwareLoadLibrary 未定义 - 有什么想法吗?

visual-studio - Visual Studio 2015 : No 64-bit command prompt