Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共9 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助]调用DLL中函数,传入参数,但参数值未有变化

1楼
thsimong 发表于:2019/1/7 11:14:31
调用DLL,可以正常调用其中的方法,但传入的参数值并未发生预期变化,默认传入参数是按地址传递的不是吗?我在变量前添加byref,提示语法错误。我的写法是:myaddin.jisuan(ByRef a1,ByRef a2)。请问我如何才能让参数在经过jisuan函数运行后得到相应的改变。
2楼
无为剑 发表于:2019/1/7 16:13:40
你用C++开的ACTIVEX控件,然后用VBA调用的吗?
建议提供更多的问题细节和描述
3楼
thsimong 发表于:2019/1/7 16:21:37
是的。dll是根据论坛给的mode开发的,dll没问题,函数可以正常调用
4楼
thsimong 发表于:2019/1/7 16:24:37
传递变量给调用的函数,在函数中进行运算,期待调用结束后变量的值会发生相应的变化。但实际上却没有,猜测是不是传递的参数是按值传递的?那如何才能按引用传递呢?我在参数前加byref 或“&”都被提示语法错误。
5楼
无为剑 发表于:2019/1/7 16:58:56
运算结果建议通过函数返回传递,不要使用参数传递返回值。
如果你非要用参数返回,参数必须是VARIANT*类型的才可以,这方面的内容已经超出金字塔论坛的客服范畴,建议你去专门的C++的服务社区咨询
[此贴子已经被作者于2019/1/7 16:59:18编辑过]
6楼
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这几个变量的值都没有改变,都还是原来初始化的值。
7楼
thsimong 发表于:2019/1/7 17:51:09
麻烦您再帮看看,谢谢!
dll中的函数我是这么写的
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这几个变量的值都没有改变,都还是原来初始化的值。

8楼
thsimong 发表于:2019/1/7 18:21:25
进一步搞清楚了问题,说传入参数类型不匹配。这咋整,若在vba中如下定义变量:private a1 as integer,又不能通过。咋整。 
9楼
thsimong 发表于:2019/1/7 18:31:26
在调用函数前使用CInt()强制转换类型,依然结果不对
共9 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.03516 s, 2 queries.