爱新觉罗二狗 2025-10-22 14:34 采纳率: 40%
浏览 11

c++,字符串数组传递匹配不到格式

函数定义

int Initial( TCHAR* basePath,const CString *devIp );

函数调用

    TCHAR buff[ 256 ];
    GetModuleFileName( NULL, buff, 256 );
    CString devip[] = {_T("1"),_T("2")};
    E3_ERR Err = m_pEzdKernel->Initial( buff, devip );

报错

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    LNK2001    无法解析的外部符号 "public: enum  Initial(char *,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > const *)" (?Initial@@QAE?AW4@PADPBV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z)

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-10-22 14:46
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题分析

    你遇到的问题是关于C++中字符串数组传递的问题。具体来说,你定义了一个函数Initial,它接受一个TCHAR*类型的参数basePath和一个CString*类型的参数devIp。但是,当你在函数调用中传递一个CString类型的变量给devIp时,匹配不到格式。

    解决方案

    这是因为CString类型的变量在传递给CString*类型的参数时,需要使用指向CString对象的指针。具体来说,你可以使用&运算符来获取CString对象的地址。

    修改后的函数调用

    CString devIp = "192.168.1.1";
    Initial(basePath, &devIp);
    

    或者,如果你不需要修改devIp的值,可以直接传递devIp对象本身:

    Initial(basePath, devIp);
    

    修改后的函数定义

    int Initial( TCHAR* basePath, CString devIp );
    

    注意:在函数定义中,CString devIp表示函数接受一个CString类型的参数,而不是一个指向CString对象的指针。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月22日