xamrin 调用c++写的so文件总是失败闪退,怎么搞?
C++侧
extern "C" void inv(double * AA, double * rres, int row)
C#侧
namespace AndroidApp1
{
[Activity(Label = "@string/app_name", MainLauncher = true)]
public partial class MainActivity : Activity
{
public TextView output1;
[LibraryImport("libAndroidDll.so", EntryPoint = "inv")]
public static partial void inv(ref double AA, ref double rres,int row);
protected override void OnCreate(Bundle? savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
output1 = FindViewById<TextView>(Resource.Id.output1);
output1.Text = "";
double[] AA = new double[4] { 1,2,3,4};
double[] rres = new double[4];
inv(ref AA[0], ref rres[0], 2);
output1.Text += Convert.ToString(rres[0]);
output1.Text += " ";
output1.Text += Convert.ToString(rres[1]);
output1.Text += " ";
output1.Text += Convert.ToString(rres[2]);
output1.Text += " ";
output1.Text += Convert.ToString(rres[3]);
output1.Text += " ";
}
}
}
C++侧
extern "C" void inv(double * AA, double * rres, int row)
C#侧
namespace AndroidApp1
{
[Activity(Label = "@string/app_name", MainLauncher = true)]
public partial class MainActivity : Activity
{
public TextView output1;
[LibraryImport("libAndroidDll.so", EntryPoint = "inv")]
public static partial void inv(ref double AA, ref double rres,int row);
protected override void OnCreate(Bundle? savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
output1 = FindViewById<TextView>(Resource.Id.output1);
output1.Text = "";
double[] AA = new double[4] { 1,2,3,4};
double[] rres = new double[4];
inv(ref AA[0], ref rres[0], 2);
output1.Text += Convert.ToString(rres[0]);
output1.Text += " ";
output1.Text += Convert.ToString(rres[1]);
output1.Text += " ";
output1.Text += Convert.ToString(rres[2]);
output1.Text += " ";
output1.Text += Convert.ToString(rres[3]);
output1.Text += " ";
}
}
}