작년 10 월부터 Microsoft 빌드 컨퍼런스를보고 있었는데 새로운 Metro 스타일 앱을 만들 때 개발자가 C#으로 원시 코드를 작성할 수 있다고 발표 한 것을 알고있었습니다. 이것이 어떻게 가능한지? 나는 단지 궁금하다. C#이 중간 바이트 코드로 컴파일 된 다음 가상 컴퓨터에서 실행되도록 (CLI 표준의 일부로) 설계되지 않았습니까? 가상 머신에서 실행되는 것을 어떻게 "원시 코드"라고 부를 수 있습니까?C#의 원시 코드?
답변
항상 네이티브 코드를 관리 코드에서 호출 할 수 있습니다. 일반적으로 어떤 시점에서 Windows와 상호 작용하는 .net 응용 프로그램은 기본 구성 요소로 제어 권한을 넘깁니다.
역사적으로 고유 코드를 수동으로 호출하기 위해 PInvoke (플랫폼 호출)를 사용합니다. 관리 코드가 DLL에 구현 된 관리되지 않는 함수를 호출 할 수 있도록합니다.
새로운 기능은 Windows Runtime, 기본적으로 향상된 COM 기반 API입니다. 당신은 여기에서 그것을 읽을 수 있습니다 - http://en.wikipedia.org/wiki/Windows_Runtime - 프로세스를 더 쉽게/덜 들여다.
EDIT - 분명히 말하면, C#을 원시 코드로 컴파일 할 수있는 것은 아닙니다. 이것은 여전히 가능하지 않습니다. 그들은 winrt가 C#의 원시 코드 호출을 포함하는 새로운 (클리너) 메커니즘을 제공한다고 선전했습니다.
질문을 읽으면서 OP가 관리되지 않는 라이브러리를 호출하지 않고 바이트 코드로 C#을 컴파일하는 것에 대해 묻는 것처럼 보였습니다. 그래도 나는 잘못 될 수 있습니다. –
그는 프레젠테이션을 오해했습니다.C#을 네이티브 코드로 컴파일 할 수는 없습니다 (이론적으로 그런 컴파일러를 만들 수는 있지만 존재하지 않습니다.) 그러나 C#과 네이티브 코드를 결합하는 것이 더 쉽습니다. 예를 보려면 http://blogs.msdn.com/b/pfxteam/archive/2011/11/12/10236375.aspx – bkr
참조 Bartok 컴파일러 (~ 5 년 전 MS의 Singularity 프로젝트의 일부)는 C# (글쎄, # 노래하지만, 그것은 C#의 확장) 네이티브 코드, IIRC. –
- 1. C의 마이크에서 원시 데이터 청크 가져 오기
- 2. 원시 데이터 형식 대 Objective C의 개체
- 3. 마샬링 C의 DLL 코드
- 4. objective-c의 이상한 코드
- 5. 원시 코드 검사
- 6. 하늘빛과 원시 코드
- 7. 원시 프로세스에 코드 삽입
- 8. HelloJni의 원시 코드 디버깅
- 9. Azure에서 원시 코드 실행
- 10. Java 원시 코드 프리미티브
- 11. LLVM 원시 코드 생성
- 12. 이해의 x86 어셈블리 코드 C의 코드
- 13. C의 하드 코드 바이트 배열
- 14. ExpressionEngine의 원시 코드 가져 오기
- 15. 런타임에 지정된 원시 코드 호출
- 16. Java에서 원시 코드 기능 제한
- 17. 자바 원시 메소드 소스 코드
- 18. Objective C의 구조체 또는 원시 데이터 형식 배열
- 19. C의 원시 이미지에서 각 픽셀의 RGB 값 가져 오기
- 20. 배열을 통한 검색을위한 Objective-C의 코드 최적화
- 21. C의 쉘 코드 - 이것은 무엇을 의미합니까?
- 22. Java JITC 원시 코드 생성/실행 예제?
- 23. 어떻게 안드로이드에서 원시 코드 GLUt를 사용합니까?
- 24. (특정 플랫폼 용) 원시 코드 방출
- 25. Qt : 프로젝트에 원시 OS 특정 코드 추가
- 26. HTML5에서 원시 코드 (윈도우)를 사용하는 방법
- 27. EF 4.1 코드 먼저 원시 SQL
- 28. 원시 코드 시스템을 latin-1로 변환하는 방법
- 29. Objective-C의 비트 변환 도구
- 30. Objective-C의 서브 클래스 NSArray
바이트 코드는 가상 시스템의 기본입니다. 그게 전부입니다 –
C#은 언어입니다. 네이티브 코드로 컴파일되는 것을 막을 수있는 근본적인 마술이 있다고 생각합니까? VM에서 실행할 필요는 없습니다. –
@MateuszKowalczyk 그래서 "진짜"의미에서 네이티브 코드가 아닌가? – Ayush