Visual C++ кросс-платформенный Android: включить предварительно созданную общую библиотеку

Я использую кроссплатформенные инструменты Visual C++ для Android, как описано здесь: https://msdn.microsoft.com/en-us/library/dn707591.aspx

Пока все работает нормально (я могу создавать и запускать на своем телефоне шаблоны в разделе «Файл» -> «Новый проект» -> «Кросс-платформа» -> Android). Однако я не могу понять, как связать свое приложение с готовой общей библиотекой в ​​виде файла *.so.

До сих пор я пробовал следующие шаги:

Шаг 1

Чтобы проверить способность 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). Этот проект компилируется и работает нормально.

Шаг 4

На следующем шаге я застрял: мне нужно каким-то образом связать файл libSharedLibrary.so с проектом Visual Studio. Я не смог найти ничего в параметрах проекта проекта Visual Studio, что позволило бы мне это сделать.

Итак, вот мой вопрос: как мне настроить кроссплатформенный проект Android на Visual C++, чтобы связать с ним общий объект (*.so)?

Это мой первый пост о стеке, поэтому не стесняйтесь исправлять меня, если я сделал что-то не так в своем посте.


person Simulo    schedule 28.10.2016    source источник


Ответы (1)


Потратив безумно много времени, я нашел решение (спасибо Microsoft за то, что нигде не документировали эту функциональность...):

  • Откройте решение Visual Studio.
  • Перейти к проекту упаковки Android
  • Щелкните правой кнопкой мыши проект, затем выберите «Добавить» -> «Новая папка».
  • Назовите новую папку «libs» (это имя обязательно!)
  • Создайте подпапку для каждой целевой архитектуры процессора (например, «armeabi-v7a»).
  • Перетащите соответствующий файл *.so в эти подпапки.

При компиляции проекта папка libs и ее содержимое копируются в скомпилированный файл *.apk.

Надеюсь, это помогло кому-то!

person Simulo    schedule 05.12.2017
comment
через 5 часов я нашел этот пост. Большое спасибо - person kaiser; 31.05.2019