VC中DLL的函数声明:
extern "C" long PASCAL EXPORT Mid_Get_NodeTime(char *Node,char *cTime);
这个函数在VB中工作正常,现在需要在C#中调用,
说明:
Node参数是一个输入参数,cTime是一个输出参数,
功能:输入一个节点名,获取它的时间.请问在C#里怎么声明和调用?

解决方案 »

  1.   


    [DllImport("dll名")]
    private static extern int Mid_Get_NodeTime(string Node,StringBuilder cTime);
    声明之后,和其他方法一样调用。
      

  2.   

    StringBuilder 类型的参数先需要赋值?
    怎么赋值?
      

  3.   

    有警告,不能运行.
    警告:
    方法、运算符或访问器“WindowsApplication1.Form1.Mid_Get_NodeTime(string, System.Text.StringBuilder)”被标记为外部对象并且它上面没有任何属性。请考虑添加一个 DllImport 属性以指定外部实现。 E:\高速Demo\C#\获取时间、发送等演示\WindowsApplication1\WindowsApplication1\Form1.cs 17 28 WindowsApplication1
    怎么修改?
      

  4.   

    创建一个StringBuilder对象。
    你不会漏掉了前面的DllImport吧?
      

  5.   

    你不会漏掉了前面的DllImport吧?-----------------------------------------------
    [DllImport("CQGS_MID.dll")]
    static extern long Mid_Get_NodeTime(string node, StringBuilder time);
      

  6.   

    CQGS_MID.dll这个文件在哪个位置?C#中的long是8个字节而int是4个字节。
      

  7.   

    忘说了,还调用了一个函数,
    [DllImport("CQGS_MID.dll")]
            static extern int Get_NodeStat_(string node, string stat);
            static extern long Mid_Get_NodeTime(string node, StringBuilder time);
      

  8.   

    只声明使用Mid_Get_NodeTime一个函数是正常的了/
      

  9.   

    哈哈,知道了,谢谢大家!
    [DllImport("CQGS_MID.dll")]    
    static extern int Get_NodeStat_(string node, string stat); 
    [DllImport("CQGS_MID.dll")]  
    static extern long Mid_Get_NodeTime(string node, StringBuilder time);OK!
    原来是这样写.今天第一次写C#,学了不少东西,谢谢各位.