我做了一个很简单的取字符串的长度函数。做成dll让VB调用。
int  PASCAL strLen(char* str)
{
int nlen;
for (nlen=0;*(str+nlen)!='\0';nlen++);
return *nlen;
}
声名如下:
Public Declare Function strLen Lib "c:\CBase.dll" (ByRef str As String) As Integer
调用:Dim str As String
str = "test"
MsgBox strLen(str)无论str给多少都是返回3,这是怎么回事啊?
还有我要怎么样才能返回一个字符串给VB?大虾,过来帮个忙啊~!在线等。急急!

解决方案 »

  1.   

    修改一下:
    这里为什么不能修改自己的帖子,上面那个是return nLen;没有*的
      

  2.   

    Public Declare Function strLen Lib "c:\CBase.dll" (Byval str As String) As Integerby value
      

  3.   

    Public Declare Function strLen Lib "c:\CBase.dll" & _
    (Byval str As String) As Integer 
      

  4.   

    你的问题解决没有
    我上次也做了一个这样的程序
    但传进去的字符串是乱码,我到现在都还不有解决呢?也不知是什么原因
    我觉得上面改成byval是不是没有效果
    无非一个传值一个传址
    我觉得应该用传址
      

  5.   

    在这里用byval还是byref都是一样的,因为在传字符串的情况下都是传的地址。所以没有任何效果,朋友们,帮我动手做做吧!我实在是急用啊!上面的方法都没有用啊!