call library fuction node 配置中calling convention选择c或st
时间:12-13
整理:3721RD
点击:
rt
.106
.106
这是两种软件开发工具对dll的调用规则
一般情况下默认的为C 规则,这种规则不需在函数前加关键字
而采用_stdcall规则即standard Windows calling 规则则必须在函数前加关键字_stdcall
,且必须在.def中进行函数声明!
上面说的是在编译dll时用到的
至于在调用时选用那种就要看你调用的dll中的函数属于那种类型了。
.197
.197
确切的说是函数调用时的参数传递方式.从最基础的角度看(比如汇编),调用函数的时候参
数是通过堆栈来传递的.参数先入栈,然后跳转到函数代码.函数一开始的地方就是参数出栈
. 这些工作编译器会替你做.不过,不同语言的编译器是按不同的顺序来操作的.
一种是参数从左到右入栈.很多语言都这样用.一般叫pascal方式.另外一种是C语言的方式
,参数从右到左入栈.dll是编译好的二进制代码,所以调用的时候必须按dll编译时候取的规
则传递参数.
右到左的规则好像就C用.所以,windows规定的标准调用方式是pascal方式.所以用C写dll时
候往往建议用_stdcall 关键字来改变缺省的调用规则.不是必须的:) 如果是必须的话,调
用dll的时候反而没有麻烦了.呵呵.
.70