带有模板的 Visual Studio C++/CLI 神秘错误
Posted
技术标签:
【中文标题】带有模板的 Visual Studio C++/CLI 神秘错误【英文标题】:Visual Studio C++/CLI Mysterious Error With Template 【发布时间】:2016-12-08 02:31:49 【问题描述】:嗯,我一直在尝试在 Visual Studio 2015 中制作 C++ DLL,因为我对 Visual Studio 不是很好,所以花了一段时间。
我需要访问 .NET 库,特别是 System::Management。 (由于糟糕的 C++ 实现,编写代码比需要的要难一些,但至少它有一个。)
我修复了明显的错误,最后发现我必须在项目属性中启用 CLR,然后使用 References->Add Reference 选择相关库。但毕竟,现在它只是给出了这个奇怪的错误:
LNK1104: cannot open file 'MSCOREE.lib'
编译器不会在任何下方显示红色波浪线,并且错误声称该行是“1”并且文件是“LINK”,所以那里没有帮助。
我想我可能在某个地方弄乱了项目配置,所以我创建了一个新项目并将代码移过来。错误仍然发生。如果我关闭 CLR 并注释掉与 .NET 相关的代码,则构建成功且没有错误。
所以我尝试从模板(Visual C++ -> Win32 控制台应用程序)创建一个新项目,然后在执行其他任何操作之前启用 CLR。然后我又试了一次,选择了不同版本的 .NET 框架。
最后,我尝试使用模板(Visual C++ -> CLR -> CLR 控制台应用程序)创建一个项目并立即构建它。我的意思是字面上没有做任何其他事情。它仍然给出了同样的错误!
LNK1104: cannot open file 'MSCOREE.lib'
到底发生了什么?我在这里做错了什么,还是 VS2015 刚刚坏了?
【问题讨论】:
【参考方案1】:我遇到了同样的问题。 安装“.NET Framework 4.6.1 SDK”解决了这个问题。注意版本号,从你的项目配置文件中获取
【讨论】:
为我工作。对于使用 Chocolaty 的用户,组件名称为“Microsoft.Net.ComponentGroup.4.6.1.DeveloperTools”。来自here 我使用 VS2019 + vc141,我遇到了完全相同的问题。我看到了这个答案,但没有注意到它必须是 SDK。我还安装了 .NET Framework 4.8 并认为已经足够了。但它不是:).. 所以是的,.NET Framework 4.6.1 SDK 对于 vc141 工具集是必不可少的【参考方案2】:检查 Visual Studio 安装程序“C++/CLI 支持”以获取所需版本的构建工具。
【讨论】:
我如何知道我需要哪个版本的 C++/CLI 支持?我在 VS2019 中看到了多个版本。 @VinShahrdar 版本在 .sln/.proj 中指定【参考方案3】:试试这个, 右键单击显示“LNK1104:无法打开文件“MSCOREE.lib”的项目,然后选择属性--> 配置属性--> VC++ 目录--> 库目录--> 从下面添加两个条目,用分号分隔
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64
这是您的“mscoree.lib”应该在的位置,在执行此操作之前检查它是否存在,否则您可能需要安装/重新安装 Microsoft SDK
【讨论】:
Windows SDK 10 是否有相同的安装?我在我的 Windows SDK 10 安装中找不到这个文件。 :-( 仍在调查,但不确定这个是否被更高版本的 SDK (10) 重用【参考方案4】:在某些情况下,SDK 可能不会按照MSCoree.lib missing from WinSDK 中的说明在 LIB 文件夹中安装所需的文件。他们的解决方案是执行安装修复。这可能行不通。
我已成功运行 WinSDKInterop_amd64\WinSDKInterop_amd64.msi
,从而创建了:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\IA64\mscoree.lib
C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\mscoree.lib
C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64\mscoree.lib
【讨论】:
以上是关于带有模板的 Visual Studio C++/CLI 神秘错误的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio+VAssistX自动添加函数头文件头注释