1

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;

}
4

2 に答える 2

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 アプリ プロジェクトを作成します ([新しいプロジェクト] メニューの [Visual C#] の下にあります。ソリューション名を右クリックし、[追加] > [既存のプロジェクトの追加] を選択して、Dll プロジェクトを選択します。これを行ったら、 Windows Phone アプリ プロジェクトを右クリックし、[参照の追加] を選択します。[ソリューション] タブの下に Dll プロジェクトが表示されます。

これをすべて正しく行った場合は、Windows Phone アプリの C# 部分でネイティブ コードを "使用" して使用できるようになります。

using Dll;

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

参照を追加しないと、コンポーネントを使用できないことに注意してください。

それが役立つことを本当に願っています!

于 2013-10-11T08:42:55.010 に答える
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

于 2013-04-18T05:36:49.390 に答える