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

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

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



1>------ 已启动生成: 项目: mySkill, 配置: Debug Win32 ------ 1> 2.cpp 1>d:\c\myskill\myskill\src\utils\vector.h(662): warning C4244: “参数”: 从“double”转换到“float”,可能丢失数据 1>d:\c\myskill\myskill\src\utils\game_state.h(125): warning C4800: “const int”: 将值强制为布尔值“true”或“false”(性能警告) 1>d:\c\myskill\myskill\src\utils\game_state.h(129): warning C4800: “const int”: 将值强制为布尔值“true”或“false”(性能警告) 1>d:\c\myskill\myskill\src\utils\game_state.h(133): warning C4800: “const int”: 将值强制为布尔值“true”或“false”(性能警告) 1>d:\c\myskill\myskill\src\utils\game_state.h(137): warning C4800: “const int”: 将值强制为布尔值“true”或“false”(性能警告) 1>d:\c\myskill\myskill\src\utils\game_state.h(141): warning C4800: “const int”: 将值强制为布尔值“true”或“false”(性能警告) 1>d:\c\myskill\myskill\src\utils\2.cpp(14): warning C4190: “player_plan”有指定的 C 链接,但返回 C 不兼容UDT“PlayerTask” 1> d:\c\myskill\myskill\src\utils\playertask.h(30) : 参见“PlayerTask”的声明 1>d:\c\myskill\myskill\src\utils\2.cpp(90): warning C4244: “初始化”: 从“double”转换到“float”,可能丢失数据 1>main.obj : error LNK2005: _player_plan 已经在 2.obj 中定义 1> 正在创建库 D:\C\mySkill\Debug\mySkill.lib 和对象 D:\C\mySkill\Debug\mySkill.exp 1>D:\C\mySkill\Debug\mySkill.dll : fatal error LNK1169: 找到一个或多个多重定义的符号 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
最新发布
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellokandy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值