既然是DLL,就会有Export,C的API名和Export可能会不一样,用个工具看看(比如eXeScope)。其他的和调用kernel32.dll是一样的,用DllImport就可以了

解决方案 »

  1.   

    [DllImport("你的DLL名字")]
    static extern unsafe 类型 名称(参数);    // 名称要填在Export里显示的
      

  2.   

    [DllImport("kernel32")]
    public static extern long GetPrivateProfileString( string lpApplicationName , string  lpKeyName , string lpDefault , string lpReturnedString, long nSize, string lpFileName);
      

  3.   

    例:
    在a.dll中;
      int __stdcall test( char* msg)
    {
       strcpy(msg, "test");
        return 0;
    }C#程序:
    [DllImport("a.dll")]
     static extern int test( byte[] msg);void dd()
    {
       string str="";
       test(str);//调用
       Console.Write(str);
    }
    :)
      

  4.   

    :[DllImport("crypt32.dll", EntryPoint="PFXExportCertStoreEx", CharSet=CharSet.Auto)] 其中的EntryPoint啊,CharSet啊,都有些什么作用啊?
      

  5.   

    出了一点问题:
    1.提示信息:未处理的System.DLLNotFoundException类型的异常出现在xxx.exe中无法加载xxxaaa.dll2.如上面的提示,好像C#中的string变量不能和纯C的char*交互的!点解啊,各位!
      

  6.   

    [DllImport("路径" + "你的DLL名字")]
    static extern unsafe 类型 名称(参数);    // 名称要填在Export里显示的
      

  7.   

    char* msg是一个指针,你按unsafe查一下C#的帮助,里面有教你如何调用指针的.