这是我第一次尝试为安卓/iOS创建一个库c++。
我正在使用VisualStudio2015-Xamarin。
首先,我创建了一个项目: Visual C++ ->、跨平台->共享库。在hared库中,我创建了2个文件。
SayHello.h:
#pragma once
#include <string.h>
class SayHello {
public:
SayHello();
~SayHello();
static char* Hello();
};SayHello.cpp:
#include "SayHello.h"
extern "C"
{
SayHello::SayHello(){}
SayHello::~SayHello(){}
char * SayHello::Hello()
{
return "Hello !";
}
}然后,我生成了一个文件libSayHello.so,并使用xamarin创建了一个Android项目,试图调用这个函数hello。这是我的MainActivity.cs:
[DllImport("libSayHello.so")]
static extern String Hello();
protected override void OnCreate(Bundle bundle)
{
// I paste only my added code :
String hello = Hello();
Toast.MakeText(this.ApplicationContext, hello, ToastLength.Long);
}我在本教程中完成了所有步骤,但我有一个例外:
System.DllNotFoundException: libSayHello.so
我在找这个,但我一定是个菜鸟,因为我什么都没找到。我该如何使用我的libSayHello.so?
编辑:
这是我在7zip中看到的libSayHello.so:

我的项目是:

发布于 2017-10-02 05:57:08
我想这将是你的最佳样本。
这一切都是根据下列计划进行的:
[Xamarin.Droid.project]->[Properties]->[Android Options]->[Advanced]->[Supported architectures]

检查您的项目所需的archs。根据这一点,您的共享库应该为这些archs编译。您应该将共享库放在Xamarin.Droid.project的文件夹库中:

<ItemGroup> <AndroidNativeLibrary Include="lib\{ARCH}\libCLib.so"> <Abi>{ARCH}</Abi> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </AndroidNativeLibrary> </ItemGroup>
{ARCH}可能是下一个:armeabi-v7a,armeabi,arm64-v8a,x86,x86_64。using System.Runtime.InteropServices;发布于 2017-09-25 08:24:05
https://stackoverflow.com/questions/46364752
复制相似问题