3

WP8アプリケーションにC++ランタイムコンポーネントがあり、名前空間名を変更すると、その名前空間でクラスをインスタンス化しようとするたびに「TargetInvocation」例外がスローされます。

例として、デフォルトのC ++ Windowsランタイムコンポーネントを作成すると、ヘッダーは次のようになります。

#pragma once

namespace CppComponent1
{
    public ref class WindowsPhoneRuntimeComponent sealed
    {
    public:
        WindowsPhoneRuntimeComponent();
    };
}

.hと.cppをに変更CppComponent1してから、C#コードでオブジェクトをインスタンス化しようとすると、次のエラーが発生します。CppComponent2WindowsPhoneRuntimeComponent

A first chance exception of type 'System.TypeLoadException' occurred in Unknown Module.
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.ni.dll
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in Microsoft.Phone.ni.dll

WP8アプリでネイティブモジュールの名前空間を変更するにはどうすればよいですか?ありがとう!

4

1 に答える 1

6

コンポーネントを宣言する Windows メタデータ (WinMD) ファイルの名前は、パブリック型が宣言されている名前空間のプレフィックスである必要があります。(別の質問への回答で、名前空間ルールのもう少し詳しい説明を提供しました。)

名前空間の名前を からCppComponent1に変更する場合は、ビルドによって生成された WinMD ファイルの名前も からにCppComponent2変更する必要があります。CppComponent1.winmdCppComponent2.winmd

于 2013-01-14T04:40:36.477 に答える