2012-04-24 2 views
7

C++에서는 __declspec(align(#)) 선언자를 사용하여 사용자 정의 데이터 정렬을 제어 할 수 있습니다. 어떻게 C#에서 이것을 할 수 있습니다. 내 DLL에 어셈블러에 대한 두 개의 절차가 있습니다. 프로 시저 (두 배열)의 인수는 16 바이트에 정렬되어야합니다. C++의 경우 잘 작동합니다. 에 관리를 위해 당신이 찾고 있다면C# 데이터 정렬 조정

나는 단지 사용 선언

__declspec(align(16)) 
double a[2]={10.2,10.6}; 
+2

어쩌면 당신은 당신이 대신 수행 할 작업을 알려해야합니다 (또는 추가로) 다른 언어로 그것을 할 것입니다 방법에 대해 설명합니다. – Servy

+4

@Servy : 솔직히 솔직히 그가 무엇을하고 싶은지에 관해 꽤 분명하다고 생각했습니다. 다른 언어로 예제를 제공하는 것이 정상입니다. – NotMe

+0

@ChrisLively 잘못이 아니에요, 충분하지 않다고 생각합니다. 다른 언어의 기능에 익숙한 사람들에게 응답을 제한합니다. 직접 항구는 항상 언어간에 아이디어가되는 것은 아닙니다. 기본 문제가있는 경우 언어에 더 적합한 솔루션을 사용할 수 있습니다. – Servy

답변

8

당신에게, 상호 운용성 (C#을 사이에 데이터를 전송 /. NET 기반 및 C/C++/어셈블러 기반 소프트웨어) 비는 관리 MSDN에 따르면

[StructLayout(LayoutKind.Explicit, Pack = 16)] 
public class MyDataClass { 
    [FieldOffset(0)] 
    double[] a; 
} 

: 다음 StructLayout 속성의 조합과 FieldOffset 속성을 사용

을3210

System.Runtime.InteropServices.StructLayoutAttribute.Pack 필드는 대상 개체의 데이터 필드에 대한 메모리 정렬을 결정합니다.

http://support.microsoft.com/kb/922785

+0

내 대답이 도움이 되었다면 올바른 것으로 표시하십시오 ... –

+0

Downvoter, 관심이 있으십니까? –