在Windows Phone 7中使用C#dll

时间:2010-12-01 07:13:10

标签: dllimport

我尝试在Windows Phone 7中使用C#dll,但在开始调试后发生错误,如下图所示。


疑难解答提示:  如果类库中方法的访问级别已更改,请重新编译引用该库的任何程序集。  获得此异常的一般帮助。


这是代码..

----------------- Windows Phone 7 --------------------------- --------------------

using System;
...
using System.Runtime.InteropServices;

namespace DllLoadTest
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }

        [DllImport("MathLibrary.dll")]
        public static extern int AddInteger(int a, int b);

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("test " + AddInteger(3, 4));
        }
    }
}

------------------------ C#MathLibrary.dll ------------------- ---------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MathLibrary
{
    public class Add
    {
        public static long AddInteger(long i, long j)
        {
            return i + j;
        }
    }
}

有什么问题吗?如果没有,使用C#dll for WindowsPhone7是不可能的? C#Dll在visualstudio2008 C#中很好地加载了。

1 个答案:

答案 0 :(得分:2)

为什么要在用C#编写的类库上使用P / Invoke?只需添加对DLL的引用并直接使用它:

using MathLibrary;
...

private void button1_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("test " + Add.AddInteger(3, 4));
}

您不能在Windows Phone 7中使用P / Invoke,但可以使用类库(为Windows Phone 7构建)。