我正在用C ++编写一个非托管DLL。在Windows DLL中使用float作为函数参数是一个好主意吗?
我希望我的DLL能够从尽可能多的语言中使用(VB6,.NET等)。为此,我使用了STDCALL并避免使用C ++类型。
大多数语言会正确处理浮动吗?如果没有,我应该使用什么?
答案 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。