为了简短起见,我编译了gperf2.0项目,并将输出添加到另一个项目中,位于“lib \ Release”和“lib \ Debug”文件夹中。 然后,我将libtcmalloc_minimal.lib文件添加到发布配置的链接器输入中,并将libtcmalloc_minimal-debug.lib添加到调试配置中,其中附加库文件夹设置为:$(ProjectDir)lib \ Release for Release,以及$( ProjectDir)lib \ Debug for Debug。 我还添加了一个post build事件:复制“$(ProjectDir)lib \ Release *。”“$(TargetDir)”for release并复制“$(ProjectDir)lib \ Debug 。*”“$ (TargetDir)“for Debug。
问题?
错误3致命错误LNK1181:无法打开输入文件'.. \ lib \ Debug \ libtcmalloc_minimal-debug.lib'框架框架
当我在Release config中构建项目时,它给了我。为什么要使用调试库?我对命令行输出进行了三重检查,并使用了正确的文件夹。什么给出了什么? (/ LIBPATH: “G:\ licenta \框架-transfer_RO-03may-94b4df \框架\框架\ lib中\释放”)
修改
我还应该在另一台PC上添加编译成功,我手动添加了lib路径,而不使用$ keywords。但是,在这台PC上,即使编译了lib文件,它也会给我链接器错误。我讨厌链接器。
编辑2
我还应该提一下,lib文件是dll的导入库。 dll是在两台PC上编译的。
编辑3
即使手动添加了lib路径,它也不起作用。我一直试着找出这个问题一个小时,这很烦人。我真的很讨厌链接器。
编辑4
我删除了对该lib文件的每个引用,包括标题,dll,任何内容。它仍然给了我这个:
错误3致命错误LNK1181:无法打开输入文件'.. \ lib \ Debug \ libtcmalloc_minimal-debug.lib'框架框架
What.The。
答案 0 :(得分:1)
不要使用Linker项目属性来尝试解决此问题。而是通过在“解决方案资源管理器”窗口中右键单击项目名称,选择“添加现有项”,然后使用文件浏览器选择所需的.lib
文件,将库直接添加到项目中。
由于您希望同时拥有库的Debug和Release版本,因此它有点复杂。要解决此问题,请使用我描述的方法将libtcmalloc_minimal.lib
和libtcmalloc_minimal-debug.lib
添加到项目中。然后:
libtcmalloc_minimal.lib
(在Solution Explorer窗口中),选择Properties,将Configuration配置为“Debug”并将“Excluded From Build”设置为YES。单击“确定”。libtcmalloc_minimal-debug.lib
做同样的事情,只有这次你有“Release”配置,因为“Excluded From Build”= YES。(因此版本libtcmalloc
被排除在Debug版本中,而Debug libtcmalloc
被排除在Release版本中。否则它会尝试同时链接两个库。)
Visual Studio知道如果项目文件中列出了.lib
文件,则应使用正确的相对路径将其传递给链接器。它还知道不要打扰项目中为当前配置(Debug或Release)设置“Excluded From Build”的任何文件。