c++ - 来自不兼容类型 c 的赋值

标签 c++ c linux compilation argv

我不经常使用 C 或 C++,但我差不多 完成编译一个用 opencv 检测人脸的文件,它是一个 c++ 文件的拷贝,已经为 windows 做了它,用于在社交网络中标记,我在编译时遇到的代码错误是下一个

In function 'main':
warning: assignment from incompatible pointer type

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;
}

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

我会做 dea=argv[1]

但这会引发另一种错误,所以我采用了这种方法。

最佳答案

Argv 应该声明为char **argv,或者char *argv[],但是你声明为char **argv[] 是一个三重指针。

您正在尝试将 char * 分配给 char

关于c++ - 来自不兼容类型 c 的赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15221128/

相关文章:

c - 将结构的内容传递给 C 中的另一个变量

linux - 使用大额支票 if elif

c++ - LLVM out of source pass 构建 : Loadable modules not supported (on Linux)

c++ - 在 C++ 中抽象两个略有不同的函数的最佳方法是什么?

c++ - 如何使元组的最小堆按第二个元素排序?

C 在 EOF 后继续读取文件

C - 扩展字符串的内容

java - action.keyDown(Keys.CONTROL).sendKeys ("a").keyUp(Keys.CONTROL).build() 在 Windows 上有效,但在 Linux 上无效

c++ - 将文本文件读入矩阵,然后将它们相乘

c++ - 通过引用传递 vector