我们做的项目里面的某些算法是C++写的,封装成DLL供C#代码调用。里面有这样一个函数:
CePred_Sin(char** Info,char * FName,char EvaluateResult[]) 
请问在C#中声明这个函数时参数怎么写啊,我对C++很不熟悉,望大家指点一下,谢谢!!! 
这个DLL是别人写的,他在C++中是这样调用的:#include"C45_pred_sig_dll.h"
#include"stdio.h"
main()
{
    char *Information[]={"1","0","4","2","5","5","2","AAA"};
    char * FilePath="data\\C45";
    char EvalResult[20];;
    Pred_Sin(Information,FilePath,EvalResult);
    printf("%s\n",EvalResult);        
}char** Info貌似是一个二维的字符数组 
char * FName为一个文件的有效路径 
char EvaluateResult[]是返回值我自己在C#中是这样写的:[DllImport("CEC45_TRAIN.dll", EntryPoint = "CePred_Sin", CharSet = CharSet.None, CallingConvention = CallingConvention.StdCall)]
public static extern void CePred_Sin(ref string[] Info,string FName,ref string[] EvaluateResult);
希望高人帮助解决一下,注:最好不要用unsafe的C#代码=。=

解决方案 »

  1.   

    不知道C#怎么去调用非托管代码的DLL,一直也在找这方面的资料!
    char *Information[]一维的字符型指针数组
    char *FilePath字符型指针变量!C++和C语言是相通的!
      

  2.   


    [DllImport("CEC45_TRAIN.dll", EntryPoint = "CePred_Sin", CharSet = CharSet.None, CallingConvention = CallingConvention.StdCall)]
    public static extern void CePred_Sin(string[] Info,string FName,StringBuilder EvaluateResult);    string Information[]={"1","0","4","2","5","5","2","AAA"};
        string FilePath="data\\C45";
        StringBuilder EvalResult=new StringBuilder (20);
        Pred_Sin(Information,FilePath,EvalResult);
        MessageBox.Show(EvalResult.ToString());