windows c++ 错误汇总

1.fatal error C1900

错误:fatal error C1900: “P1”(第“20081201”版)和“P2”(第“20080116”版)之间 Il 不匹配

检查之后发现jepglib8c64.lib文件时LGCT库,重新编译成非LGCT库即可正常编译:

编译方法:设置项目-->属性-->配置属性-->常规-->项目默认值-->全程序优化选择“无全程序优化”

2

在MFC中使用,函数调用缺少参数列表;请使用“&Dlg6::Erosion”创建指向成员的指针

一般回调使用不正确,

如果在类中的回调,一定声明要用static,而且在类的实现中重新赋值

头文件中声明

typedef void(*stream_callback)(char* fReceiveBuffer, int frameSize);

class video_stream_char{
       static stream_callback    mStreamCallback;
      
};

类的实现中初始化

video_stream_char* video_stream_char::vsc=nullptr;
stream_callback    video_stream_char::mStreamCallback=nullptr;
 video_stream_char::video_stream_char(){

}

最后调用

3.1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: sprintf 已经在 中定义

多执行线程调试 (/MTd):对应 LIBCMTD.lib   生成debug版的lib

多执行线程 (/MT):对应 LIBCMT.lib               生成Release版的lib

多执行线程调试 DLL (/MDd):对应 MSVCRTD.lib 生成debug版的dll

多执行线程 DLL (/MD):对应 MSVCRT.lib 生成Release版的dll

 4

stack around the variable '' was corrupted

可能是数组越界,也可能是dll库有修改,头文件没更新之类的

 

5

CRT detected that the application wrote to memory after end of heap buffer

数组越界

dll导出类的成员变化(如果不想导出,设置为private 用set/get方法访问)

dll接口变化

 

 

原文地址:https://www.cnblogs.com/baldermurphy/p/7763884.html