今天我启动了Visual Studio 2010(Visual C ++)并开始研究项目。该解决方案包含两个项目。一个是我正在编写的静态库,另一个是包含库的单元测试的测试应用程序。
不改变昨天的任何内容,可执行文件不再链接:
LINK : fatal error LNK1104: cannot open file 'mylib.lib'
静态库编译和链接很好。我没有在一周左右更改项目设置,昨天连接得很好。
如果我进入可执行项目的设置并为$(SolutionDir)\debug
添加库目录,我会收到以下链接错误:
LINK : fatal error LNK1104: cannot open file 'kernel32.lib'
我不确定问题是什么。我试过清理,重建,甚至重新启动我的机器。谷歌发现了古代Visual C ++版本中的一些错误(但我使用的是2010),以及该程序已经运行的可能性。但是,它没有运行,重启确认了这一点。
什么会导致链接器找不到核心库,例如kernel32.lib,或者就此而言,我的解决方案的输出目录是什么?
这是老式的C ++,一个跨平台的库,而不是Microsoft添加的托管内容。
答案 0 :(得分:4)
我必须在“Library Directories”对话框中选中“从父级或项目默认值继承”。一旦我这样做,链接器就可以找到所有必需的库。我仍然必须包括$(SolutionDir)\debug
。
答案 1 :(得分:3)
将microsoft SDK目录包含在project-> properties-> linker-> general->其他库目录中。
在我的电脑上
D:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Lib
答案 2 :(得分:1)
我通过禁用“启用.NET Framework源代码”解决了这个问题(请参阅:“菜单栏/工具/选项/调试/常规/启用.NET Framework源代码”)。显然是this is a bug in Visual Studio。