我尝试在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#中很好地加载了。
答案 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构建)。