2010-03-26 7 views
2

헤더 파일에 VTVOID라는 유형이 있습니다. 구조체 요소의 유형 및 여러 매개 변수입니다. 유형을 정의하는 헤더 파일에서
는 C# 코드에 내가 오류를또 다른 무효 C# 질문

"시스템을 얻을 내가 System.Void에 무효지도 그러나 나는 플러그인 다른 토론에 읽을 줄

#define VTVOID void 

입니다. Void는 C#에서 사용할 수 없습니다. - typeof (void)를 사용하여 void 객체를 가져옵니다. "

그래서 어떤 유형의 플러그를합니까?

+3

어, typeof (void)가 작동하지 않습니까? –

+0

당신은 #define VTVOID void가 작동한다고 말하면서 무엇을 바꾸려고합니까? –

+0

System.Object를 사용하지 않는 이유는 무엇입니까? ;) –

답변

2

반환 값이 void 인 경우 System.Void Foo() {} 대신 void Foo() {}를 사용하십시오.

데이터 배열이 필요할 경우 void * 대신 byte []를 사용하십시오.

+0

VTVOID는 다음과 같이 struct 요소 유형으로 사용됩니다. [StrucLayout (LayoutKind.Sequential, Pack = 4)]] 공용 구조체 DAFILESPEC { 공용 VTDWORD dwSpecType; 공개 VTVOID pSpec; 공개 IntPtr hThis; }; 및 매개 변수 유형으로 [DllImport ("sccda.dll")] public static extern uint DADeInit (VTVOID param0); 위의 PInvoke Wizard 2.0의 출력과 C# 호환 유형의 하위 버전입니다. 예 : VTDWORD는 32 비트 시스템에서 사용되는 단위입니다. 기타 설명 : #define VTVOID void는 C 헤더 파일이 아닙니다. C# System.Type VTV = typeof (void)가 사용 방법을 파악하지 못했습니다. –

+0

이것은 이상합니다. 변수를 void로 선언 할 수 없습니다. 변수 "pSpec"의 이름에서 접두사가 ** 포인터 ** 인 것으로 추측합니다. VTVOID를 인수로 사용하는 메서드는이 메서드에 매개 변수가 없다고 추측합니다. – codymanix

+0

여기서 볼 수 있듯이 DADeInit에는 매개 변수가 없습니다. http://download.oracle.com/docs/cd/E14154_01/sxguide/html/c04_dataaccess003.htm – codymanix