3

さまざまな WinRT プロジェクトで使用したいポータブル クラス ライブラリを作成しました。この PCL dll は、C# Winrt アプリ、VB WinRT アプリ、silverlight、および Windows Phone で使用できます。しかし、何らかの理由で、ライブラリを C++ プロジェクトに正常に追加できません。これを試したときに表示されるエラーは次のとおりです。

ファイル 'C:\Users\xyz\pqr.dll' への参照を追加できませんでした。このファイルは .NET アセンブリでも登録済みの ActiveX コントロールでもないためです。

以前にSOで同じ質問を見ましたが、OPは彼に役立つと思われる解決策を投稿しました。元の質問が示唆したように、次の行を見つけようとしましたが、vcxproj ファイルで見つかりません。

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

元の質問にコメントを投稿できないため、ここに別の質問を投稿する必要があると考えました。

何か案は?

編集: 私のプロジェクトの設定は次のようになります:

  • My PCL ライブラリの名前が A.dll であるとします。
  • 私の WinRT コンポーネントは B.winmd と呼ばれます。
  • 現在、B.winmd は A.dll を内部で使用し、その周りにラッパーを作成します。

C++ でストア アプリ C を作成する場合、プロジェクト C に A.dll と B.winmd の両方への参照を追加する必要があります。 A.dll を使用します。私は何を間違っていますか?

4

2 に答える 2

2

C++ アプリケーションは、マネージ コードを実行する方法を知りません。C# を使用してライブラリを作成し、C++ や Javascript などの別のランタイム環境で使用できるようにする場合は、Windows ランタイム コンポーネント プロジェクトを作成する必要があります。そのパブリック インターフェイスは、ランタイム環境間の相互運用を可能にするために、WinRT と互換性のある型に制限されています。他にも小さなルールがたくさん。

MSDN スターター ページはこちらです。

于 2013-01-24T20:29:31.377 に答える
0

あなたのメッセージは良いヒントになるはずです - PCL ライブラリは .NET ライブラリです。WinRT プロジェクトには WinRT コンポーネントが必要です。非 .NET 言語で使用できるようにするには、PCL ライブラリをラップする .NET ベースの WinRT コンポーネントを作成する必要があります。

于 2013-01-24T20:27:37.987 に答える