【Debug】warning C4190:有指定的 C 链接,但返回了与 C 不兼容的 UDT

来源:互联网 发布:卡廷事件 知乎 编辑:程序博客网 时间:2024/05/22 00:29

导出的函数中需要返回结构体数据,如下结构体:

typedef struct tagLoginData{int errCode;//返回码std::string description;//返回码描述}LOGIN_DATA, *PLOGIN_DATA;

如果使用下面这种定义方式,将出现C4190的提示错误:

extern "C" LOGIN_DATA func ();   // C4190

请改为:
extern "C" LOGIN_DATA* func ();

另外,如果结构体里面包含了别的类,而这个类里面出现了构造函数,请把构造函数去掉。因为C是不识别构造函数的!
class CUserInfo {public:std::string id;std::string nick;std::string uid;std::string passport;std::string ver;int handler;CUserInfo(): id(""),nick(""),uid(""),ver(""),passport(""),handler(0){}};

或者改为指针返回:

std::vector<CUserInfo> * __stdcall getUserInfoList( void );



0 0