【问题标题】:Create shared library from c-source code for Xamarin Android从 Xamarin Android 的 c 源代码创建共享库
【发布时间】:2016-01-28 04:56:59
【问题描述】:

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

【问题讨论】:

    标签: c# android c visual-studio xamarin


    【解决方案1】:

    这就是你要找的:

    Build and Debug C++ Libraries in Xamarin.Android Apps with Visual Studio 2015

    概述

    • 安装 Visual Studio 2015
    • 新建 Visual C++ 动态共享库项目
    • 在您的 Xamarin 项目中引用此项目
    • 使用DllImport 访问C 代码。示例:

      [DllImport ("sanangeles", 
                   EntryPoint = "Java_com_example_SanAngeles_DemoGLSurfaceView_nativePause")]
      static extern void nativePause (IntPtr jnienv);
      
    • 浏览this project以获得更深入的了解

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

    【讨论】:

    • 如果我能以这种方式做到这一点,那就太好了。但我不明白一些事情。首先,当我将 Xamarin Android 项目的引用添加到新的动态共享库项目时,我收到警告 The project 'DynamicSipProject' cannot be referenced. An assembly must have a 'dll' or 'exe' extension in order to be referenced。第二个是在编译 pjsip 源代码之后,我有很多静态库(.a)。如何在这个动态共享库项目中使用它们?
    猜你喜欢
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    相关资源
    最近更新 更多