visual c++ cross platform android: 包括预构建的共享库
visual c++ cross platform android: Include prebuilt shared library
我正在使用 Android 的 Visual C++ 跨平台工具,如下所述:https://msdn.microsoft.com/en-us/library/dn707591.aspx
到目前为止一切正常(我可以在我的 phone 文件 -> 新项目 -> 跨平台 -> Android 下的模板上构建和 运行)。但是,我无法找到如何将我的应用程序 link 以 *.so 文件形式.
预构建的共享库
到目前为止,我尝试了以下步骤:
步骤 1
为了测试 Visual Studio 到 link 预建共享库的能力,我创建了一个小型共享库,如下所示:
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-build 编译了这个共享库,它给了我一个文件 libSharedLibrary.so
步骤 3
然后我创建了一个 Visual Studio 项目:文件 -> 新建 -> 项目 -> 跨平台 -> Android -> 基本应用程序(Android,Ant)。这个项目编译并且运行没问题。
步骤 4
下一步是我卡住的地方:我需要以某种方式 link libSharedLibrary.so 文件到 Visual Studio 项目。我在 Visual Studio 项目的项目选项中找不到任何允许我这样做的东西。
所以,这是我的问题:
我必须如何设置我的 Visual C++ 跨平台 Android 项目才能 link 共享对象 (*.so)?
这是我的第一个 Whosebug post,如果我在 post.
中有任何错误,请随时纠正我
在投入大量时间后,我找到了解决方案(感谢 Microsoft 没有在任何地方记录此功能...):
- 打开Visual Studio解决方案
- 转到 Android 打包项目
- 右键单击项目,然后选择 'Add' -> 'New Folder'
- 将新文件夹命名为 'libs'(此命名是强制性的!)
- 为每个目标处理器架构创建一个子文件夹(例如 'armeabi-v7a')
- 将相应的 *.so 文件拖放到这些子文件夹中
编译项目时,'libs' 文件夹及其内容被复制到已编译的 *.apk 文件中。
希望这对某些人有所帮助!
我正在使用 Android 的 Visual C++ 跨平台工具,如下所述:https://msdn.microsoft.com/en-us/library/dn707591.aspx
到目前为止一切正常(我可以在我的 phone 文件 -> 新项目 -> 跨平台 -> Android 下的模板上构建和 运行)。但是,我无法找到如何将我的应用程序 link 以 *.so 文件形式.
预构建的共享库到目前为止,我尝试了以下步骤:
步骤 1
为了测试 Visual Studio 到 link 预建共享库的能力,我创建了一个小型共享库,如下所示:
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-build 编译了这个共享库,它给了我一个文件 libSharedLibrary.so
步骤 3
然后我创建了一个 Visual Studio 项目:文件 -> 新建 -> 项目 -> 跨平台 -> Android -> 基本应用程序(Android,Ant)。这个项目编译并且运行没问题。
步骤 4
下一步是我卡住的地方:我需要以某种方式 link libSharedLibrary.so 文件到 Visual Studio 项目。我在 Visual Studio 项目的项目选项中找不到任何允许我这样做的东西。
所以,这是我的问题: 我必须如何设置我的 Visual C++ 跨平台 Android 项目才能 link 共享对象 (*.so)?
这是我的第一个 Whosebug post,如果我在 post.
中有任何错误,请随时纠正我在投入大量时间后,我找到了解决方案(感谢 Microsoft 没有在任何地方记录此功能...):
- 打开Visual Studio解决方案
- 转到 Android 打包项目
- 右键单击项目,然后选择 'Add' -> 'New Folder'
- 将新文件夹命名为 'libs'(此命名是强制性的!)
- 为每个目标处理器架构创建一个子文件夹(例如 'armeabi-v7a')
- 将相应的 *.so 文件拖放到这些子文件夹中
编译项目时,'libs' 文件夹及其内容被复制到已编译的 *.apk 文件中。
希望这对某些人有所帮助!