【link】error C2485: “__restrict”: 无法识别的扩展属性 && error LNK2001:无法解析的外部符号

Date:2018.10.23


1、前言

   在进行开源库的提取和封装的过程中,遇到如下两个链接问题:

  • error C2485: “__restrict”: 无法识别的扩展属性
  • error LNK2001:无法解析的外部符号 _gettimeofday
    第一个问题比较少见,第二个问题比较常见。

下面对以上两个链接问题进行分析和总结。

2、分析

(1)error C2485: “__restrict”: 无法识别的扩展属性
原因分析:
   在vs2005和vs2010等高版本中识别__restrict,而VC6中不识别。由于错误出现在stdlib.h中,而其中也有restrict的定义和使用,推测是在之前对restrict进行了重定义。

解决方案:
   搜索"#define restrict __restrict"或者相关宏定义,然后将之注释即可。

参考自:
https://www.codeproject.com/Messages/2651289/Re-i-got-a-compiling-error-like-error-C2485-__rest.aspx

(2)error LNK2001:无法解析的外部符号 _gettimeofday
原因分析:
  这种问题一般是由于没有包含该符号或者函数的头文件或定义导致符号无法找到。当然也可能虽然包含了相应的头文件,但是其中含有宏控制,没有打开宏,导致函数定义无法找到。
  因此,归根到底,主要是由于该符号或函数的定义没有编译包含进来。

解决方案:
   将该符号对应的定义包含进来。


THE END!

原文地址:https://www.cnblogs.com/SoaringLee/p/10532325.html