2009-05-27 4 views
2

C++에서 관리되지 않는 DLL을 작성하고 있습니다. Windows DLL에서 float를 함수 매개 변수로 사용하는 것이 좋습니다.Windows DLL 함수 매개 변수에서 float 사용

는 내 DLL이 가능 (VB6, .NET 등) 많은 언어에서 사용할 수 있도록하고 싶습니다. 이를 위해 STDCALL을 사용하고 C++ 유형을 피했습니다.

대부분의 언어가 올바르게 float을 처리합니까? 그렇지 않다면 무엇을 사용해야합니까?

답변

4

float 유형은 심지어 일부 IEEE 형식으로 표준화, 이렇게 진행됩니다.

+0

호기심에 찬 것은 IEEE 754입니다. – Kevin

2

VB 및 C#과 같은 모든 Microsoft 언어는 문제가 없습니다. 실제로 VARIANT이 지원하는 모든 유형을 사용하면 문제가 없습니다. 대부분의 컴파일러에서 사용

1

비결은 파악하는 방법 "마샬"는 DLL에서 함수에 의해 기대되는 타입으로 호출 언어의 값. 많은 경우 호출 언어의 데이터 유형은 비슷하지만 C가 사용하는 유형과 약간 다를 것입니다. 그런 경우 C 유형으로 값을 복사 한 다음 DLL에 전달하는 방법이 필요합니다.

는 희망이 당신에게 얻을 수있는 MSDN에서이 문서의 시작 :

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.aspx

+0

내 질문에 내가 straigh C++ DLL (관리되지 않음)에서 Marshall floats가 필요한지 아닌지 추측합니다. –

+0

@jm : float은 C# 에서처럼 C# 측에서 똑같이 보이는 blittable 유형입니다. 이 문서보기 : http://msdn.microsoft.com/en-us/library/75dwhxf7.aspx – Kevin

0

짧은 대답이 주류 언어는 더 오버 헤드가 거의 DLL 함수에 플로트 매개 변수를 처리하는 것입니다.

당신은 기본 C 데이터 유형 중 하나를 사용하여 괜찮아요, 코드를 호출하면 그것을 처리 할 수없는 경우 당신은 완벽하게 유효한 DLL을 생산하기 때문에 문제는 그들의 끝에 당신이 아니다.