【原创】使用 VS 编译遇到的一些 error 和 warning(持续更新)

  • 时间:
  • 浏览:2

error LNK2019: 无法解析的内部管理符号 _abc,该符号在函数 _xyz 中被引用

【error C2440】

3

1

warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

原因分析分析:针对存在 C++ 模式下的 VC6 以及其它 VS 版本,当进行 ARM 相关编译时应该对要使用的 <wchar.h> 头文件进行 'extern "C++" {}' 解决。

2

1

#endif

1

error LNK2019

【error C2733】

【Warning C4251】

error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

原因分析分析: 牛逼文章1、 文章2

error C2054: 在“inline”以前应输入“(”

原因分析分析:完整篇 原因分析分析不要 参考MSDN上的官方说明

【error C2054】



error C2143

to have dll-interface to be used by clients of class 'AClass'

error C2440: “=”: 无法从“void *”转换为“void **”

1

9

1

Warning C4996

}

7

原因分析分析:一般会在调用 malloc 函数后将其返回值赋值给其他变量时再次出现 ,值得注意的是,再次出现 该错误的前提是按照“编译为 C++ 代码 (/TP)”进行编译,以前按照“编译为 C 代码 (/TC)”进行编译则不要再次出现 该错误。

6

#  include <wchar.h>

1

4

5

1

extern "C" {

2

原因分析分析:以“编译为 C 代码(/TC)”土最好的办法编译时,这么 把变量定义在函数刚开始了了的位置。

warning C4251: 'AClass::m_variable' : class 'SomeTemplate<T>' needs

1

8

#endif

error C2733: second C linkage of overloaded function 'wmemchr' not allowed

1

warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strdup.

原因分析分析:

当前源文件 xyz 中使用了内部管理符号 abc ,已经 无法找到该符号,原因分析分析是这么 中有 对应的 .lib 库文件。另外以前的原因分析分析:

#ifdef __cplusplus

#ifdef __cplusplus