vs2013 error LNK2001: 无法解析的外部符号
error LNK2001第一种情况:
构建动态库的时候,报错:error LNK2001: 无法解析的外部符号 **.def
错误 178 error LNK2001: 无法解析的外部符号 input_Control *** vlc-2.2.4.32-2013-master-record\vlc-2.2.4.32-2013-master\libvlccore\libvlccore.def 1 1 libvlccore
原因是input_Control函数在input目录下的control.c中,而libvlccore工程包下的3个目录都有内容不同control.c。情况如下:
在编译libvlccore工程的时候。生产的编译文件都是control.obj ,这样会导致后编译的覆盖最开始编译出来的control.obj,从而出现*.def中连接错误的情况。
我遇到的问题是:在Debug下,编译libvlccore没有问题,而在Release下编译就出现上面的错误,很是费解,因为我libvlccore的Release属性是按照Debug配置的。好久之后才查到原因,如上:相同的control.c,后编译的覆盖掉之前编译的control.obj。我出现这样的原因是control.c属性配置问题,虽然都是control.c,但是Debug模式下做了配置,其编译会生成不同名字的obj <control1.obj, control2.obj, control3.obj>。但是Release是我自己弄的,没做配置,默认都是生成control.obj,结果到底对应的那本control.c,就看编译器的了以至于出现上面的错误。所以我们要找到libvlccore下的所有control.c,其Release属性都按照其对应的Debug模式修改:
更好的方法是改工程文件(两中方式,一是加Release,二是直接去掉condition=***),一个文件一个文件的属性去改太费劲。