Я использую кроссплатформенные инструменты 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, поэтому не стесняйтесь исправлять меня, если я сделал что-то не так в своем сообщении.
Потратив слишком много времени, я нашел решение (спасибо Microsoft за то, что нигде не документировали эту функцию …):
При компиляции проекта папка ‘libs’ и ее содержимое копируются в скомпилированный файл * .apk.
Я обновил свой пример проекта github отразить вышеупомянутые шаги и предоставить рабочий пример (требуется Visual Studio 2015)
Надеюсь, это помогло кому-то!
Других решений пока нет …