visual c ++ cross platform android:包含预建的共享库

时间:2016-10-28 14:27:52

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

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

到目前为止一切正常(我可以在手机上构建并运行File - > New Project - > Cross Platform - > Android)下的模板。但是,我无法找到如何以* .so文件的形式将我的应用链接到预建的共享库。

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

第1步

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

SharedLibrary.cpp:

#include "SharedLibrary.h"

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

void SharedLibrary()
{
}

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)

您可以找到完整的代码here

第2步

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

第3步

然后我创建了一个Visual Studio项目:File - >新 - >项目 - >跨平台 - > Android - >基本应用程序(Android,Ant)。这个项目编译并运行良好。

第4步

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

我更新了我的example github project以反映上述步骤并提供了一个工作示例(需要Visual Studio 2015)

希望这有助于某人!