将C源代码创建为Xamarin Android共享库

3

我正在尝试使用Xamarin Forms构建一个简单的sip应用程序。我使用PjSip作为sip功能的工具。我有一个带有一些方法的源文件(.c),我想从我的Xamarin应用程序中调用它们。
我已经为Xamarin ios构建了一个静态库(.a),并使用p/invoke创建了一个包装器来调用我的c文件中的方法。它运行得很完美。但现在,我卡在了构建共享库(.so)上,以便在Xamarin android中使用它们。
我正在寻找一份逐步指南,从c源代码开始,到将库链接到实际的Xamarin Android应用程序。但仍然非常感谢任何帮助。

1个回答

2
这就是您要找的内容:

使用Visual Studio 2015在Xamarin.Android应用程序中构建和调试C++库

概述

  • Install Visual Studio 2015
  • Create a new Visual C++ Dynamic Shared Library project
  • Reference this project in you Xamarin project
  • Use DllImport to access the C code. Example:

    [DllImport ("sanangeles", 
                 EntryPoint = "Java_com_example_SanAngeles_DemoGLSurfaceView_nativePause")]
    static extern void nativePause (IntPtr jnienv);
    
  • Browse this project to get a deeper view

当你这样做时,甚至可以在Visual Studio 2015中运行Xamarin.Android应用程序时调试C代码。

如果我能这样做就太好了。但是我不太理解其中的一些问题。首先,当我从我的Xamarin Android项目添加引用到一个新的Dynamic Shared Library项目时,我收到一个警告:“无法引用' DynamicSipProject'项目。必须有“dll”或“exe”扩展名才能进行引用”。第二个问题是,在编译pjsip源代码后,我有很多静态库(.a)。我该如何在此动态共享库项目中使用它们? - evgen-baton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接