2011-07-02 1 views
2

기본적으로 노출 된 명령 집합에 래퍼를 쓰려면 Mono를 사용하고 있습니다.해당 Windows/Mac DLL/DyLib를 여는 Mono DLL

집합은 동일하지만 (명령 및 서명) Windows의 DLL과 Mac의 DyLib를 통해 노출됩니다.

나에게 유일한 래퍼 .NET/Mono DLL을 생성하는 방법이 있는지 궁금 해서요.하지만 그 라이브러리를 가져 와야 올바른 라이브러리를 찾을 수 있습니다.

그렇다면 구문은 무엇입니까? 그렇지 않다면 DllImport를 컴파일 할 2 개의 다른 OS에서 분리하는 컴파일러 정의는 무엇입니까?

EDIT : Mac 부분의 동적 인 lib (.dylib) 대신 Mono에서도 정적 라이브러리 (.a)의 보너스 포인트가 있습니다.

답변

3

당신은 아마 각 플랫폼에로드 할 라이브러리 모노를 알려주는 DLL 맵 설정 파일을 제공 할 것입니다 변경이 필요합니다. 최소한 그것은 C/C로 쓰여진 네이티브 라이브러리가있는 Windows/Linux에서 저처럼 작동했습니다.

+0

그러나 모노 응용 프로그램에서 @executable_path를 사용할 때 조심하십시오. --EXE 실행 파일 대신 모노 바이너리 자체의 경로를 반환합니다. –

-1

난 당신의 코드 내부에

#define MAC/WINDOWS 

#if 

을 사용합니다. 그런 다음 DLL을 호출하도록 컴파일 할 때 -define WINDOWS 또는 -define MAC을 사용합니다. 그래서 적어도 하나의 코드베이스를 가지게 될 것입니다. 또는 환경을 점검 할 필요가 있습니다. 그러나 이것은 쉽게 까다로울 수 있습니다. 어떤 코드가 없을 것이다, 당신이 두 라이브러리에 같은 이름을 줄 수 있다면

http://www.mono-project.com/Config_DllMap

2

:

+0

간단하지만 jpobst의 답변이 더 적절합니다. 그럼에도 불구하고 +1. – Lazlo

+0

예,이 방법은 프로젝트의 내부 부분이므로 공유되지 않는 라이브러리에 유용 할 수 있습니다. –