VC2013 LINK2019:无法解析的外部符号

做算法作业用到了glpk包,在使用包时出现了LINK2019的错误。百度上说这个错误一般是“链接器无法在已编译的obj、lib或dll文件中找到函数定义”的问题。但是对链接器进行配置后发现错误仍然没有解决。

Emmmm…是不是快到2019年了要出个2019的bug提前庆祝一下。。。

后来发现不是linker的配置错误问题。本地的VC是32位的,但是安装的glpk包是64位的。把VC设为64位即可编译成功。

下面记录一下切换从32位VC切换到64位的过程:

  1. 先检查编译器是32位的还是64位的。
#include<iostream>

int main()
{
	printf("%d", sizeof(int *));
	while (1);
	return 0;
}

如果输出是4,则为32位;如果输出是8,则为64位。

  1. 项目→属性,打开项目属性页面。点击“配置管理器”。
    VC2013 LINK2019:无法解析的外部符号
  2. 配置管理器→活动解决方案平台,选择新建。
    VC2013 LINK2019:无法解析的外部符号
  3. 键入或选择新平台,选择x64。点击确定。(记忆中在没有配置过64位的时候是点选“键入或选择新平台”,会有x64的选项。)
  4. 完成。

另外记录一下链接lib的过程:

  1. 项目→属性→配置属性→VC++目录→包含目录。在“包含目录”中添加glpk.h文件所在的目录。VC2013 LINK2019:无法解析的外部符号
  2. 项目→属性→配置属性→C/C++→常规→附加包含目录。在“附加包含目录”中添加glpk.h文件所在的目录。
    VC2013 LINK2019:无法解析的外部符号
  3. 链接器→常规。修改“附加库目录”为lib包所在目录。
    VC2013 LINK2019:无法解析的外部符号
  4. 链接器→输入→附加依赖项。添加lib包的名称,如“glpk.lib”。
    VC2013 LINK2019:无法解析的外部符号
  5. 完成(上述链接库的方法是隐式链接的方法,还可通过写代码的方式进行显式链接)。

先这样、、、