2010-03-24 8 views
2

저는 현재 새로운 프로젝트를 시작하기 위해 연구하고 있습니다. 이 프로젝트는 경량 클라이언트 (아마 콘솔)와 실버 라이트를 사용하는 무거운 클라이언트의 2 부분으로 구성됩니다. 가벼운 클라이언트는 크로스 플랫폼이어야합니다.Silverlight를 C++ 정적 라이브러리와 연결할 수 있습니까?

그러나 둘 다 동일한 코어를 사용합니다 (그런데 코어는 소켓을 사용해야 할 것입니다).

가벼운 클라이언트를 빌드하는 데 C++을 사용하고 싶습니다.하지만 코어가 두 응용 프로그램에 공통적 인 점을 감안할 때 동일한 코드 일 수 있다면 많은 도움이 될 것입니다.

질문은 매우 간단합니다. Silverlight를 C++ 정적 라이브러리로 컴파일 할 수 있습니까? 가능하다면 (달빛이 비치는) 크로스 플랫폼 문제는 어떻게됩니까?

가능하지 않은 경우 크로스 플랫폼에서 Silverlight를 사용하기 위해 사용할 수있는 언어는 무엇입니까? 성능 때문에 컴파일 된 언어가 더 좋습니다!

감사합니다.

+1

크로스 플랫폼 콘솔 앱과 Silverlight 앱이 이상하게 혼합되어 있습니다. 조금 더 설명 할 수 있습니까? 당신이 대답에서 이미 볼 수 있듯이 SL에있는 C++은 아무 일도 없습니다. – AnthonyWJones

답변

3

뿐만 아니라 제

는 실버 라이트는 관리 코드를, 그것은 하지 표준 CRL을 사용하여 작업을 수행하지만, CoreCLR로 알려진 특별한 CRL. Silverlight 어셈블리는 실제 .Net 어셈블리이지만 코어 .Net 라이브러리의 제한된 하위 집합에 대해 컴파일됩니다. 브라우저에서 CoreCLR을 실행할 때 보안상의 이유로 Silverlight 어셈블리가 여러 가지 방법으로 제한됩니다. Silverlight 어셈블리를 C++로 작성할 수는 없으며 안전하지 않은 것으로 표시 될 수있는 Silverlight 코드가 없습니다 (이 제한 사항을 해결할 수있는 해킹 방법이 있음을 인정합니다).

이 대답은 Silverlight 2 & 3에만 적용됩니다. Silverlight 4에 대한 많은 경험이 없지만 SL4에서이 기능을 브라우저에 제공하는 기능에 대해서는 전혀 모릅니다.

Linux 호환성을 위해 Moonlight를 사용하고 있다면 실망 할 것입니다. 우리 팀은 Firefox, IE 및 Chrome과 비공식적으로 Opera on Windows, Firefox 및 Safari for Mac에서 실행되기 때문에 Silverlight를 선택했습니다.

편집 :이 게시물의 작성일을 메모하십시오. 이것은 SL4 이전입니다.

+0

> SL => 4의 경우 올바르지 않습니다. 권한이 부여 된 OOB 앱으로 P/Invoke 할 수 있습니다. – xanadont

+0

정확하게 맞지 않았습니다. SL 5는 승격 된 권한 앱 (OOB 설치가 필요 없음)에서 P/Invoke 액세스를 제공합니다. – xanadont

2

아니요. 실버 라이트는 관리되는 코드 로서만 제공됩니다.

그러나 브라우저에서 높은 권한으로 실행하면 Silverlight 4는 COM interop를 지원합니다. 다른 플랫폼에서는 작동하지 않으며 Windows 전용 기능입니다. 저스틴 천사가 그의 blog post regarding the (not quite) cross-platform of Silverlight에서 이것을 언급했습니다.

+0

관리되는 C#과 관리되는 C++가 아닌 "강제로"공동 작업을 수행 할 수있는 방법이 있습니다! 하지만 블로그 게시물을 주셔서 감사합니다. :) –

관련 문제