2013-08-08 3 views
2

MonoGame이 할 수있는 여러 플랫폼에서 사용하려는 MonoGame을 사용하여 게임을 만드는 데 C#을 사용하고 있습니다.여러 플랫폼에서 .NET DLL 사용

C#에서 .DLL을 작성하고 라이브러리를 다시 컴파일하지 않고 다른 운영 체제 (바람직하게는 아이폰 OS, 안드로이드와 맥 OS)에서로드하는 방법이 있나요? 각 플랫폼에 대해 "로더"응용 프로그램을 작성할 준비가되었지만 전체 프로젝트를 다시 작성하는 것은 바람직하지 않습니다. 내가 거기 바라고 있어요

는 닷넷 DLL에서 기능을로드하는 방법 (즉 게임로드) 등 MonoTouch로 지불 제품을 사용하지 않고 이러한 플랫폼을.

답변

2

기본적으로 .NET/Mono 어셈블리는 모두 ECMA 표준 인 CIL 코드로 컴파일됩니다.

그러나 OS 구체적인 사항에 의존하지 않는 방식으로 게임을 프로그래밍해야합니다.

  • 이 OS 특정 DLL을 참조하지 마십시오 특정 .NET 어셈블리 (이 제한된 WCF 지원이 원인, 어떤 WPF가 전혀없는 WWF 즉 없음 WCF()를 참조하지 마십시오 없음 P는/
  • 이 OS 특정하는 Pathes를 사용하거나 OS 특정 코드를 만들기 위해 처리기 지시문을 사용하지 마십시오 등 KERNEL32.DLL을 호출합니다 (예,이 재 컴파일이 필요하고 당신은 아마 쉽게이 문제를 해결받지 않습니다)

Mono 스레딩에는 일부 catch가 있으므로 사전 처리기를 직접 사용하여 플랫폼 별 코드를 만들어야 할 수 있습니다 ives.

솔직히 말해서, 솔루션 파일에 새 프로젝트를 추가하고 전 처리기 플래그를 설정하는 것만 큼 명확하게 작성된 경우 코드를 다시 컴파일해야하는 데 문제가 발생하지 않습니다. 그런 다음 솔루션을 컴파일하고 bin 폴더에 여러 개의 DLL이 있어야합니다. 아무도 당신이 프로젝트 전체가 다시 작성되어야한다고 말한 적이 없습니다. (프로젝트가 이미 끝났지 만 여기에 언급 된 종속성이있는 경우는 예외입니다.)이 경우에는 생각하지 않아도되는 자신의 잘못입니다. 전에 개발을 시작합니다.

당신은 필요한 모노 런타임과 (등 iOS에서) 당신의 앱을 배포해야합니다. http://www.mono-project.com/Compatibility http://www.mono-project.com/MoMA

+0

여기에 조언 해 주셔서 감사합니다. –

+0

다시 컴파일하면 좋겠지 만 그렇게해야 할 것 같습니다. 그러나 Xamarin (상용 제품)의 사용이 문제입니다. –

+0

더 나은 해결책은 앱을 실행시키고 JavaScript와 같은 것을 읽고 해석하는 것일 수 있습니까? 이것은 더 많은 코드 재사용을 허용 할 수 있습니다. –

1

Xamarin-Framework를 볼 수 있습니다. 하지만 항상 프로젝트를 다시 컴파일해야합니다. 같은 MonoTouch로 지불 제품을 사용하지 않고 이러한 플랫폼에 Xamarin

.

이 어려울 것이다.

+0

MonoTouch가 Xamarin.iOS입니다 : 그리고 이것을 위해 당신은 아마 자 마린 또는 와이어까지 자신의 모노 런타임

참조 링크 같은 것을해야합니다. 나는 피하려고 노력하고있다. –

+0

또한 이것은 완전히 잘못되었을 수도 있지만 dll 함수를 호출하는 데 사용할 수있는 P/Invoke에 대해 들어 봤습니다. 다른 플랫폼에서 작동합니까? –

+0

다른 플랫폼에는 Microsoft와 같은 DLL이 없습니다. 그래서 나는 생각합니다. 그게 twork이 아닙니다. – BendEg