修改一个C++工程,环境是VS2013,设置C Run Time 由MD改为MT,其对应的第三方依赖库也应该由MT改为MD,但是编译出现了这个错误,error LNK2011: precompiled object not linked in; image may not run,这是依赖库编译错误,通常由LIB或者OBJ等静态库的多重依赖中,在DLL动态依赖也有可能产生。
原因如下: 原来MD情况下A.dll->B.lib, B.lib->C.lib (->表示依赖),B.lib 和C.lib 都是静态库,都是MD,没有问题。 现在MT情况下A.dll->B.lib, B.lib->C.lib (->表示依赖),B.lib 和C.lib 都是静态库,改为MT,出现问题。
如果A/B/ C工程都在一个解决方案下,则没问题。 如果将A->B,B->C, B,C 在同一solution下,A则直接用静态库B.lib, 则出现error LNK2011。
解决方法:A->(B,C)------就是A直接链接到B.lib和C.lib,B最好在C的前面。