从不兼容的类型c分配

lbe*_*net 0 c c++ linux compilation argv

我不经常使用C或C++,但我即将完成编译一个用opencv检测面部的文件,这是一个已经为windows做的c ++文件的副本,用于在社交网络中进行标记,错误我编译时获取代码是下一个

In function 'main':
warning: assignment from incompatible pointer type
Run Code Online (Sandbox Code Playgroud)
int main( int argc, char** argv[])
{
    char* dea;

    int i=0;
    while(i<argc)
    {
        if(i==1){
            dea=argv[i];
        }
        i++;
    }

    char image[400],temp_image[400];


    IplImage  *img,*temp_img;
    int       key;


    storage = cvCreateMemStorage( 0 );
    cascade = ( CvHaarClassifierCascade* )cvLoad( face_cascade, 0, 0, 0 );

    if( !(cascade) )
    {
        fprintf( stderr, "ERROR: Could not load classifier cascade\n" );
        return -1;
    }



    sprintf(image,"dimage%d.jpg");

    img=cvLoadImage(dea,0);
    temp_img=cvLoadImage(dea,0);

    if(!img)
    {
        printf("Could not load image file and trying once again: %s\n",image);
    }
    printf("\n curr_image = %s",image);

    detectFacialFeatures(img,temp_img);


    cvReleaseHaarClassifierCascade( &cascade );
    cvReleaseMemStorage( &storage );

    cvReleaseImage(&img);
    cvReleaseImage(&temp_img);


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望能够发送到argv []作为可执行文件之后的第一个参数要解析的照片的位置因此我尝试使用循环来分配给char*dea; 当我为1时,argv [i]的值.

我会做dea = argv [1]

但是这引发了一种不同的错误,所以我采用了这种方法.

Aki*_*oss 9

应该将Argv声明为char **argv,或者char *argv[],但是您声明它char **argv[]指针.

你正试图分配char *一个char.