2010-06-14 2 views
2

관리되지 않는 코드 (백 엔드)와 관리되는 코드 (프런트 엔드)가 혼합되어 있으므로 interop 기법과 DllImport 특성을 사용하여 관리되는 코드에서 관리되지 않는 코드를 호출해야합니다.OS 플랫폼 기반 DllImport

32 비트 및 64 비트 OS에 대해 두 가지 버전의 비 관리 코드를 컴파일했습니다. 그들은 각각 service32.dllservice64.dll으로 명명됩니다.

[DllImport(@"service32.dll")] //for 32 bit OS invocation 
public static void SimpleFunction(); 

[DllImport(@"service64.dll")] //for 64 bit OS invocation 
public static void SimpleFunction(); 

을 그리고 내 응용 프로그램이 실행되는 플랫폼에 따라 그들에게 전화 : 그래서, 내 닷넷 코드에서, 나는 두 DLL을위한 DllImport을해야 할 것입니다.

문제는 모든 관리되지 않는 기능에 대해 32 비트 OS 용과 64 비트 OS 용으로 두 번 선언해야한다는 것입니다. 이것은 작업의 중복이며 관리되지 않는 함수의 서명을 변경할 때마다 두 곳에서 수정해야합니다.

어쨌든 DllImport에서 인수를 변경할 수 있으므로 플랫폼에 따라 올바른 dll이 자동으로 호출됩니다.

+0

자동으로 !!!!!!! –

+0

그것은 나에게 포트란처럼 보이지 않습니다. –

+0

@High, 코드는 C#, interop 코드입니다. – Graviton

답변

관련 문제