2017-10-13 12 views
0

C++ CLI (.NET)에서 (C#에서) 관리 정적 클래스를 호출 (settings.dll).<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, yes, "settings"는 네임 스페이스이지만 "컴파일러가 game_id가 의미하는 바를 아직 모르는 것 같습니다." – ekremer

+0

C++은 싱글 패스 컴파일 모델을 사용합니다. 정의 앞에 항상 선언이 나타나야합니다 C++과 매우 다른데 C++에 대한 실제 지식이 있으면 올바른 C++/CLI 코드를 작성하는 데 매우 중요하며 SO 응답을 얻는 데 중요한 코드를 게시하는 것이 중요합니다. 팀 구성원의 도움을받는 것이 좋습니다 –

답변

1

: 나는 (CLR 지원)이 코드를 만들 때, 다음과 같은 오류가 발생합니다 C++/CLI 프로젝트와 같이 C# 라이브러리를 올바르게 참조하지 않습니다. 참조가 없으면 C++ 컴파일러는 C#에서 선언 된 클래스를 찾을 수 없습니다.

Visual Studio 버전에 따라 C++/CLI 프로젝트에서 참조를 추가하는 단계는 솔루션 탐색기 트리 내부의 참조를 표시하는 다른 .NET 언어와 다소 다를 수 있습니다. 이전의 Visual Studio 버전 C++/CLI 프로젝트에서 대신 컴파일 옵션을 찾을 수 있습니다 :

enter image description here