2016-12-30 11 views
4

タイトルのとおり、UWP C#クラスライブラリリファレンスをUWP C++ DLLプロジェクトに追加しようとしています。どちらのプロジェクトもWindows 10 v10.0.14393.0をターゲットにしています。参照が追加されると、すべてが有効であるように見え、参照は参照リストの下に表示され、エラーは表示されません。参照を使用してコンパイルしようとすると、次のエラーが発生します。ユニバーサルWindows C++ DLLプロジェクトへのユニバーサルWindows C#クラスライブラリリファレンスの追加Visual Studio 2015

C2871 a namespace with this name does not exist.

ここに何か不足していますか?新しいUniversal Windows C++プロジェクトを作成する際の唯一のオプションは、DLL、Static Lib、およびWindows Runtime Componentです。 C++用のクラスライブラリオプションはありません。私は同じ結果を得た3つの異なるプロジェクトをすべて試しました。 UWP C#プロジェクトからUWP C#クラスライブラリを参照できない理由を説明してください。これは可能でなければならない何かのようです。私はそれがUWPの前に過去に可能だったことを知っています。

コードはシンプルです。

C#コード:

namespace ClassLibrary1 
{ 
    public class Class1 
    { 
    } 
} 

C++コード:

using namespace ClassLibrary1; 
+0

これはおそらく設定になります。両方のターゲットをx86に設定すると、アセンブリに署名すると同じコンパイルエラーが発生することを確認してください –

+0

両方のプロジェクトが設定マネージャ(リリースx64ビルド)でx64に設定されています。署名アセンブリの結果を確認する方法が不明ですか? – Chris

+0

したがって、x86を対象とすると同じエラーが発生しますか?別のネームスペースを使ってみましたか? ClassLibCSharp&ClassLibCppと同じですか? Signingは非常に長いショットであり、もっと手がかりを得ることを試してみたいが、SigningタブはProject Propertiesにある –

答えて

2

あなたのC#プロジェクトではなく、 "C#クラスライブラリ" より、 "C#Windowsランタイムコンポーネント" プロジェクトである必要があります。 C++からクラスライブラリにアクセスすることはできません。ターゲットコードが異なる言語である場合、最も実用的な方法は、Windowsランタイムコンポーネントにコンパイルしてアクセスすることです。

また、C#Windowsランタイムコンポーネントプロジェクトを作成した後、そのプロジェクトをC++プロジェクト参照(コードをビルドするためにvcxprojを使用していない場合は/ FUコンパイラフラグ)に追加することを忘れないでください。

+0

代わりにランタイムコンポーネントとして設定しますが、同じエラーが発生しています。エラー\t C2871 \t 'RuntimeComponent1':この名前の名前空間は存在しません。\t WindowsRuntimeComponent1 – Chris

+0

これを動作させるには、C++ C#は実行時コンポーネントをプロジェクトします。どちらか一方がランタイムコンポーネントでない場合は、ネームスペースが存在しないというエラーが発生します。 – Chris

関連する問題