在Windows DLL函数参数中使用浮点数

时间:2009-05-27 19:43:14

标签: c++ windows dll

我正在用C ++编写一个非托管DLL。在Windows DLL中使用float作为函数参数是一个好主意吗?

我希望我的DLL能够从尽可能多的语言中使用(VB6,.NET等)。为此,我使用了STDCALL并避免使用C ++类型。

大多数语言会正确处理浮动吗?如果没有,我应该使用什么?

4 个答案:

答案 0 :(得分:4)

大多数编译器中使用的float类型甚至以某种IEEE格式标准化,所以请继续。

答案 1 :(得分:2)

所有Microsoft语言,例如VB和C#都可以使用它。事实上,使用VARIANT支持的任何类型都可以。

答案 2 :(得分:1)

诀窍是弄清楚如何将调用语言中的值“编组”到dll中函数所期望的类型。很多时候,调用语言中的数据类型将与C使用的类型相似但略有不同。当发生这种情况时,您需要一种方法将值复制到C类型中,然后将其传递给DLL。

希望MSDN上的这篇文章可以帮助您入门:

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

答案 3 :(得分:0)

简短的回答是,主流语言将处理浮点参数到DLL函数,几乎没有开销。

你可以使用任何基本的C数据类型,并且如果调用代码无法处理它,问题就在于它们,而不是你的,因为你生成了一个完全有效的DLL。