2017-10-13 6 views
0

C++ CLI(.NET)から(C#で)管理静的クラスを呼び出します( settings.dll)。しかし、私は(CLRサポート付き)、このコードをビルドすると、次のエラーがスローされます。<strong>C#</strong>にDLLを使用してプロパティ(MAGIC_SEA)を初期化私は<strong>C++ CLI</strong>(Game.h)のヘッダファイルが

Error 3 error C3083: 'game_id': the symbol to the left of a '::' must be a type c:\users\ed\projectS\Game.h 
Error 4 error C2039: 'MAGIC_SEA' : is not a member of 'settings' c:\users\ed\ed\ProjectSl\Game.h 

Game.h

... 
using namespace settings; 
... 
const short MAGIC_SEA = settings::game_id::MAGIC_SEA; 
... 

settings.dll

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Resources; 
using System.Collections; 
using System.ComponentModel; 
using System.Management; 
using System.Management.Instrumentation; 

namespace settings { 
... 
public static class game_id { 

     public const short MAGIC_SEA = 1; 
... 
     }  
} 
+0

コンパイルエラーは、「設定」、かなり平易である名前空間名、ないタイプ名です。だから、コンパイラは "game_id"の意味をまだ知りません。静的クラスとは、推測が困難なことです。有効なC++/CLIコードとは関係ありません。変数宣言は常にrefクラスの中に現れなければなりません。constに相当するのは 'literal'です。 –

+0

Hans、はい、 "settings"は名前空間ですが、 "コンパイラはgame_idが何を意味するのかまだ分かりません。" – ekremer

+0

C++はシングルパスコンパイルモデルを使用しています。これはC#とはまったく異なります。正しいC++/CLIコードを記述するためには、C++の実用的な知識があることが非常に重要であり、SOの答えを得るためには重要なコードを投稿することが重要です。 –

答えて

1

に見えますC++/CLIプロジェクトのようにC#ライブラリを正しく参照していません。参照がなければ、C++コンパイラはC#で宣言されたクラスを見つけることができません。

Visual Studioのバージョンによっては、C++/CLIプロジェクトで参照を追加する手順は、ソリューションエクスプローラツリー内の参照を示す他の.NET言語とは多少異なる場合があります。古いVisual StudioのバージョンではC++/CLIのプロジェクトでは、あなたが代わりにコンパイルオプションでそれらを見つけることができます:

enter image description here

関連する問題