我用C ++创建了一个DLL文件。我想在我的Windows Phone项目中导入它。我已经遵循了来自不同来源的一些指令,即使我运行我的代码时出现以下错误:
尝试访问该方法失败:rough.MainPage.Add(System.Int32,System.Int32)。
我的windows phone c#代码在这里:
*//Here is C# code for Windows Phone
namespace testRsa
{
using System.Runtime.InteropServices;
public partial class MainPage : PhoneApplicationPage
{
[DllImport("myfunc.dll", EntryPoint = "Add", CallingConvention = CallingConvention.StdCall)]
static extern int Add(int a, int b);
// Constructor
public MainPage()
{
InitializeComponent();
int result = Add(27, 28);
System.Diagnostics.Debug.WriteLine(7);
}
}
}
我的dll .h文件在这里:
#include "stdafx.h"
#include "myfunc.h"
#include <stdexcept>
using namespace std;
double __stdcall Add(double a, double b)
{
return a + b;
}
我的Dll .cpp文件在这里: #include“stdafx.h” #include“myfunc.h” #include
using namespace std;
double __stdcall Add(double a, double b)
{
return a + b;
}
答案 0 :(得分:1)
要在C#项目中导入使用C ++,必须使其从托管代码中可见。为此,您应该在“新建项目”菜单中的“Visual C ++”部分下创建一个新的“Windows Phone Runetime”组件。例如,您可以将项目命名为“Dll”。
创建项目后,您可以修改源代码,使其具有如下所示的内容。
Dll.cpp:
#include "Dll.h"
namespace ns {
double Cpp_class::cppAdd(double a, double b)
{
return a + b;
}
}
Dll.h:
#pragma once
namespace ns {
public ref class Cpp_class sealed /* this is what makes your class visible to managed code */
{
public:
static double cppAdd(double a, double b);
};
}
编译它以验证您没有做错任何事情。 完成此操作后,创建一个新的Windows Phone应用程序项目(在New Project菜单中的Visual C#下。右键单击解决方案名称并选择'Add'&gt;'Add Existing Project',选择您的Dll项目。 完成此操作后,右键单击Windows Phone应用程序项目,选择“添加引用”,在“解决方案”选项卡下,您将看到Dll项目。
如果您正确完成了所有这些操作,现在可以通过“使用”它在Windows Phone应用程序的C#部分内使用本机代码:
using Dll;
[...]
ns.Cpp_class.Add(1,3);
请记住,如果您没有添加引用,则无法使用该组件。
我真的希望有所帮助!
答案 1 :(得分:0)
Windows 7 Phone不支持平台调用和C ++ / CLI。
但是,您可以在Windows 8 Phone上使用它。当然,在Windows 8上,你应该用C ++编写整个应用程序 - 更好的电池寿命和性能。
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681687(v=vs.105).aspx