以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- [求助]调用DLL中函数,传入参数,但参数值未有变化 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=167544) |
|
-- 作者:thsimong -- 发布时间:2019/1/7 11:14:31 -- [求助]调用DLL中函数,传入参数,但参数值未有变化 调用DLL,可以正常调用其中的方法,但传入的参数值并未发生预期变化,默认传入参数是按地址传递的不是吗?我在变量前添加byref,提示语法错误。我的写法是:myaddin.jisuan(ByRef a1,ByRef a2)。请问我如何才能让参数在经过jisuan函数运行后得到相应的改变。 |
|
-- 作者:无为剑 -- 发布时间:2019/1/7 16:13:40 -- 你用C++开的ACTIVEX控件,然后用VBA调用的吗? 建议提供更多的问题细节和描述
|
|
-- 作者:thsimong -- 发布时间:2019/1/7 16:21:37 -- 是的。dll是根据论坛给的mode开发的,dll没问题,函数可以正常调用 |
|
-- 作者:thsimong -- 发布时间:2019/1/7 16:24:37 -- 传递变量给调用的函数,在函数中进行运算,期待调用结束后变量的值会发生相应的变化。但实际上却没有,猜测是不是传递的参数是按值传递的?那如何才能按引用传递呢?我在参数前加byref 或“&”都被提示语法错误。 |
|
-- 作者:无为剑 -- 发布时间:2019/1/7 16:58:56 -- 运算结果建议通过函数返回传递,不要使用参数传递返回值。 如果你非要用参数返回,参数必须是VARIANT*类型的才可以,这方面的内容已经超出金字塔论坛的客服范畴,建议你去专门的C++的服务社区咨询
[此贴子已经被作者于2019/1/7 16:59:18编辑过]
|
|
-- 作者:thsimong -- 发布时间:2019/1/7 17:08:15 -- 我函数是这么写的 int jisuan(int v1, int v2,int v3) {
v1=v2+v3;
v2=v1+v3;
v3=v1+v2;
return v1; } 在VBA中进行调用,比如 fanhui = xx.jisuan(a1,a2,a3) 打印发现fanhui,a1,a2,a3这几个变量的值都没有改变,都还是原来初始化的值。
|
|
-- 作者:thsimong -- 发布时间:2019/1/7 17:51:09 -- 麻烦您再帮看看,谢谢!
|
|
-- 作者:thsimong -- 发布时间:2019/1/7 18:21:25 -- 进一步搞清楚了问题,说传入参数类型不匹配。这咋整,若在vba中如下定义变量:private a1 as integer,又不能通过。咋整。 |
|
-- 作者:thsimong -- 发布时间:2019/1/7 18:31:26 -- 在调用函数前使用CInt()强制转换类型,依然结果不对 |