如题 程序中需要调用一个外部函数,函数中有一个变量是字符串地址 ShowString(int lpString)
在C#中如何获取字符串地址呢? 高手帮忙

解决方案 »

  1.   

    传一个string(本身就是引用类型)就可以了。
    签名写成ShowString(string lpString);
      

  2.   

    回1楼:不行的 我用的是别人的控件 控件中的函数参数类型是固定的 int 
      

  3.   

    如果是DllImport,你就大胆的用ShowString(string lpString);
      

  4.   

    他们提供了一个ocx 文件 不是Dll
      

  5.   

    他们提供了一个ocx 文件 不是Dll
      

  6.   


    到像是我在问问题,数一数字数也没比你少了。
    你那样回话,不能增加什么有用的信息。还是不知道是怎么引用的。ShowString(int lpString)是一个非常规的写法,现在就是要判断是自动转换出错呢,还是原作者是个天才,还是别有用意。
      

  7.   

    ocx控件,
    方法一、直接到自动生成的代理中把ShowString(int lpString)改为ShowString(string lpString);
    方法二、string str = ...;
    GCHandle gch = GCHandle.Alloc(str, GCHandleType.Pinned);
    {
      int ptr = gch.AddrOfPinnedObject().ToInt32();
      ShowString( ptr );
    }
    gch.Free();
      

  8.   

    呃,我也很费解啊 他们生产板子不提供良好的开发包
    现在可用的只有一个ocx 文件,我在工具箱中点击选择项,把这个ocx添加进来,然后就可以使用了啊
    我目前只会这样用,是不是还有别的方法?
      

  9.   

    直接到自动生成的代理中把ShowString(int lpString)改为ShowString(string lpString)
    这个是什么意思 能说的详细点么 谢谢!
    第二种方法我试验了,会返回调用失败!