C++에서 관리되지 않는 DLL을 작성하고 있습니다. Windows DLL에서 float를 함수 매개 변수로 사용하는 것이 좋습니다.Windows DLL 함수 매개 변수에서 float 사용
는 내 DLL이 가능 (VB6, .NET 등) 많은 언어에서 사용할 수 있도록하고 싶습니다. 이를 위해 STDCALL을 사용하고 C++ 유형을 피했습니다.
대부분의 언어가 올바르게 float을 처리합니까? 그렇지 않다면 무엇을 사용해야합니까?
C++에서 관리되지 않는 DLL을 작성하고 있습니다. Windows DLL에서 float를 함수 매개 변수로 사용하는 것이 좋습니다.Windows DLL 함수 매개 변수에서 float 사용
는 내 DLL이 가능 (VB6, .NET 등) 많은 언어에서 사용할 수 있도록하고 싶습니다. 이를 위해 STDCALL을 사용하고 C++ 유형을 피했습니다.
대부분의 언어가 올바르게 float을 처리합니까? 그렇지 않다면 무엇을 사용해야합니까?
float
유형은 심지어 일부 IEEE 형식으로 표준화, 이렇게 진행됩니다.
VB 및 C#과 같은 모든 Microsoft 언어는 문제가 없습니다. 실제로 VARIANT이 지원하는 모든 유형을 사용하면 문제가 없습니다. 대부분의 컴파일러에서 사용
비결은 파악하는 방법 "마샬"는 DLL에서 함수에 의해 기대되는 타입으로 호출 언어의 값. 많은 경우 호출 언어의 데이터 유형은 비슷하지만 C가 사용하는 유형과 약간 다를 것입니다. 그런 경우 C 유형으로 값을 복사 한 다음 DLL에 전달하는 방법이 필요합니다.
는 희망이 당신에게 얻을 수있는 MSDN에서이 문서의 시작 :http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.aspx
내 질문에 내가 straigh C++ DLL (관리되지 않음)에서 Marshall floats가 필요한지 아닌지 추측합니다. –
@jm : float은 C# 에서처럼 C# 측에서 똑같이 보이는 blittable 유형입니다. 이 문서보기 : http://msdn.microsoft.com/en-us/library/75dwhxf7.aspx – Kevin
짧은 대답이 주류 언어는 더 오버 헤드가 거의 DLL 함수에 플로트 매개 변수를 처리하는 것입니다.
당신은 기본 C 데이터 유형 중 하나를 사용하여 괜찮아요, 코드를 호출하면 그것을 처리 할 수없는 경우 당신은 완벽하게 유효한 DLL을 생산하기 때문에 문제는 그들의 끝에 당신이 아니다.
호기심에 찬 것은 IEEE 754입니다. – Kevin