带有模板的 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 2010怎么新建c语言文件

visual studio2005 缺少模板

Visual Studio+VAssistX自动添加函数头文件头注释

Visual Studio+VAssistX自动添加函数头文件头注释

带有 Visual Studio 2012 的 TCC

Visual Studio 2017 c++ win32 控制台项目模板