用vc写了一个dll,
double CParserApp::Calculate(CArray <double ,double> Value,CArray <CString ,CString&> ValueName,CString str)
vb 中调用时
declare Function Calculate(Value as double,ValueName as double,str as string)
引用时写dim Value(10) as double 
dim ValueName(10) as string 
dim str as string
dim a as double
dim i as integer 
for i=1 to 10 
Value(i)=i
ValueName(i)="i" & CStr(i)
next i 
str="abcd"
a=Calculate(Value,ValueName,str)问题是数据传不过去
如果是byval 可以,,但vb中函数定义我就不知道怎么写

解决方案 »

  1.   

    我把问题写得已经很具体了,请高手指点一二,
    小弟感激涕零,毕业设计就快没时间了,
    Help
      

  2.   

    这样写接口对VB这样的客户来说可是很不友好呦!
    了解一下SafeArray罢。
      

  3.   

    double CParserApp::Calculate(double * Value,BYTE *ValueName,char *str,int n,int m)
    {
    //AfxMessageBox ("wys");
    CString a;
    CString aa[50];
    int j;
    int i;
    j=0;
    for (i=1;i<=m;i++)
    {
    a=(CString)*(ValueName+i-1);
    if (a=="")
    {
    j=j+1;
    }
    else 
    aa[j]=aa[j]+a; } CMathParser MyParser;
    for (i=0;i<=n;i++)
    {
    MyParser.AddVar(*(Value+i),aa[i+1]);
    }
    //MyParser.AddVar(*(Value+1),);
    MyParser.Parse(str);
    //MyParser.ParseValue;
    if (MyParser.ParseError==true) 
    return 0;
    else
    return MyParser.ParseValue;
    }