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

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

Пока все работает отлично (я могу собрать и запустить на своем телефоне шаблоны в меню Файл -> Новый проект -> Кроссплатформенность -> 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)

Вы можете найти полный код Вот

Шаг 2

Затем я скомпилировал эту общую библиотеку с помощью команды NDK-сборки, который дает мне файл libSharedLibrary.so

Шаг 3

Затем я создал проект Visual Studio: Файл -> Создать -> Проект -> Кроссплатформенность -> Android -> Базовое приложение (Android, Ant). Этот проект компилируется и работает нормально.

Шаг 4

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

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

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

1

Решение

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

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

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

Я обновил свой пример проекта github отразить вышеупомянутые шаги и предоставить рабочий пример (требуется Visual Studio 2015)

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]