我正在c#Windows Phone 7中编写测试项目“HelloPhone”,我正在尝试使用 一个C ++ DLL / clr。在执行时,我得到一个未处理的异常错误报告该尝试 调用DLL函数失败。我不是C#程序员,所以这是我的代码:
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using Microsoft.Phone;
using DldesAPI;
using System.Runtime.InteropServices;
namespace DldesAPI
{
public class DldesLib
{
[DllImport("DLDESLIB.dll", CharSet = CharSet.Auto)]
public static extern int GetVersionNumber();
// [DllImport("DLDESLIB.dll")]
// public static extern int EncryptFirst(byte *pSrc,int SrcLen,byte *pDst,byte *pKey,int iKLen,long *wa,bool bRand);
}
}
namespace HelloPhone
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void ClickMeButton_Click(object sender, RoutedEventArgs e)
{
int x = 0;
string Msg;
Msg=MessageTextBox.Text;
x = 1;
x = DldesLib.GetVersionNumber();
}
}
}
你能告诉我我做错了吗?
谢谢你。 施皮罗斯答案 0 :(得分:2)
您可能不会太高兴听到这个消息,但在Windows Phone 7中using p/invoke or a C++/CLR DLL is not supported。
答案 1 :(得分:0)
您是要尝试获取DeviceFirmwareVersion
还是DeviceHardwareVersion
?你能用到:
DeviceExtendedProperties.GetValue("DeviceFirmwareVersion").ToString();
http://msdn.microsoft.com/en-us/library/ff941122(v=VS.92).aspx
答案 2 :(得分:0)
是的,在WP7上可能不支持这种东西(据我所知):
使用System.Runtime.InteropServices;
[DllImport("DLDESLIB.dll", CharSet = CharSet.Auto)]
它运行在.net框架的紧凑版本上。