繁体   English   中英

如何在Windows Phone项目中导入C ++ dll

[英]How to import C++ dll in Windows Phone Project

我已经在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;

}

要将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应用程序项目(在“新建项目”菜单中的Visual C#下。右键单击解决方案名称,然后选择“添加”>“添加现有项目”,选择您的Dll项目。完成后,右键单击Windows Phone应用程序项目,选择“添加引用”,在“解决方案”选项卡下,您将看到Dll项目。

如果正确完成所有这些操作,则现在可以通过“使用”它在Windows Phone应用程序的C#部分中使用您的本机代码:

using Dll;

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

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

我真的希望有帮助!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM