2012-04-11 2 views
4

저는 .NET을 처음 사용하지만 MonoTouch/Droid를 사용하여 일부 핵심 코드를 공유 할 수있는 모바일 응용 프로그램을 작성하는 데 관심이 있습니다.MonoTouch 및 MonoDroid에서 C DLL 사용

나는 사용하고자하는 많은 C 스타일 API 라이브러리가 있습니다 (예 : libxml2). Mono에서 이러한 기본 라이브러리 메서드를 어떻게 호출합니까? Windows에서 개발할 때 Windows에서 컴파일 한 동일한 바이너리를 사용할 수 있습니까? OS X에서 개발 중이라면 Windows 바이너리를 사용할 수 있습니까?

+2

모노는 XML 라이브러리와 함께 제공됩니다. 아니요, OS X (또는 iOS 또는 Android)에서 기본 Windows 바이너리를 사용할 수 없습니다. –

답변

7

어떻게 모노에서 이러한 기본 라이브러리 메서드를 호출 할 수 있습니까?

p/invoke (플랫폼 호출)을 사용하면 모든 .NET 언어에서 네이티브 C 코드를 호출 할 수 있습니다. 네이티브 라이브러리를 사용하기 위해 선언문을 작성해야합니다. @Marcelo가 종종 매우 좋다고 언급 한 것처럼 많은 대부분의 C 라이브러리에 .NET 대안을 사용하는 편이 더 편리합니다.

MonoTouch에서도 작동합니다. 그러나 Apple iOS가 사용자 제공 동적 라이브러리 (Windows의 경우 OSX/iOS에서는 .dylib, Windows에서는 .dll)와의 연결을 허용하지 않기 때문에 정적 라이브러리 (OSX에서는 .a, 예 : Windows에서는 .lib)를 제공해야합니다.

Windows에서 개발할 때 Windows에서 컴파일 한 동일한 바이너리를 사용할 수 있습니까?

Windows에서 생성 된 바이너리는 Windows의 Mono에서 제대로 실행되어야합니다. Windows에서도 Microsoft .NET을 사용할 수 있습니다.

OS X에서 개발중인 경우 Windows 바이너리를 사용할 수 있습니까? 바이너리 닷넷 다음 코드를 컴파일하는 경우

은 - 기간 내내 같이 P/호출 declrations 휴대용 (예컨대 32 대 64 비트 형식)이다.

이진 코드가 기본 코드 인 경우 아니요입니다. Mono는 Windows 에뮬레이터가 아닙니다. .EXE 또는 .DLL 내부에서 CIL 코드를 실행하지만 기본 Windows 코드를 실행하거나 Windows 외부 API (Windows 외부)에 대한 액세스를 제공하지 않습니다.

+0

정적 네이티브 라이브러리를 참조하는 방법에 대한 추가 지침을 얻을 수 있습니까? [찾았습니다] 리소스 (http://msdn.microsoft.com/en-us/library/aa446536.aspx) 동적 라이브러리를 연결하기 위해 지정하는 것 같습니다. – user1027169

+0

방금 ​​정적 라이브러리 연결이 불가능하다는 내용의 [this post] (http://stackoverflow.com/questions/729562/how-to-compile-c-sharp-application-with-c-static-library)를 발견했습니다. . NET에서. 그렇다면 MonoTouch에서 어떻게 C++ 라이브러리를 사용할 수 있습니까? – user1027169

+0

게시물이 맞습니다. ** ** Microsoft ** .NET에서는 불가능 **합니다. 그러나 Mono (런타임을 임베드 할 때)와 MonoTouch (이는 iOS의 요구 사항이므로)로 ** 가능합니다 **. – poupou