如何在Windows Phone Project中导入c++ dll

本文关键字:导入 c++ dll Project Phone Windows | 更新日期: 2023-09-27 18:09:39

我用c++创建了一个DLL文件。我想把它导入到我的Windows Phone项目中。我遵循了来自不同来源的许多指令,即使在我运行代码时,我也会得到以下错误:

尝试访问方法失败:rough.MainPage.Add(System. add)。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;
}

如何在Windows Phone Project中导入c++ dll

要将c++导入到c#项目中,您必须使其从托管代码中可见。为此,您应该在new Project菜单中的Visual c++部分下创建一个新的"Windows Phone runtime"组件。您可以将您的项目命名为"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应用程序项目(在新项目菜单中的Visual c#下)。右键单击解决方案名称并选择"添加">"添加现有项目",选择您的Dll项目。完成后,右键单击Windows Phone应用程序项目,选择"添加引用",在"解决方案"选项卡下,您将看到您的Dll项目。

如果你正确地做了这些,你现在可以在Windows Phone应用程序的c#部分使用你的本地代码:

using Dll;
[...]
ns.Cpp_class.Add(1,3);

请记住,如果没有添加引用,将无法使用该组件。

我真的希望这有帮助!

Windows 7 Phone不支持平台调用和c++/CLI。

然而,你可以在Windows 8手机上使用它。当然,在Windows 8上,你可能应该用c++编写整个应用程序——更好的电池寿命和性能。

http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681687 (v = vs.105) . aspx