链接C++和C++/CLI项目(.NET Core)时出现导入错误(E0337)

Import error (E0337) while linking C++ and C++/CLI projects (.NET Core)(链接C++和C++/CLI项目(.NET Core)时出现导入错误(E0337))
本文介绍了链接C++和C++/CLI项目(.NET Core)时出现导入错误(E0337)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我当前正在尝试设置.NET项目。我有一个用c++编写的现有Back项目,我想在Web界面上显示它。为此,我正在尝试通过CLR Class Library.NET Core将我的C++链接到.NET平台(并最终将其链接到ASP.NET Web界面,但这是下一步)。

当我尝试将原始文件导入到C++/CLI项目时出现问题。当我尝试导入的文件使用C++向量(#include <vector>)时,我得到8个错误,全部包含文件corecrt_search.h中的E0337 linkage specification is incompatible with previous "bsearch_s" (decalred at line 26)(是一个Windows10工具包文件)。您可以在this screenshot上查看错误的完整内容。

其他错误分别位于第35、48、64、74、83、93和56行的函数qort_s、bsearch、_lfind_s、_lfind、_lsearch和qort。

如果导入的文件不使用矢量,则不会出现错误。

文件corecrt_search.h确实包含这些函数的两个声明,每个声明都应该在不同的上下文中编译。以下是此文件的一小段摘录(希望这就足够了)。

_CRT_BEGIN_C_HEADER

_Check_return_
_ACRTIMP void* __cdecl bsearch(...);


// Managed search routines
#if defined __cplusplus && defined _M_CEE
extern "C++"
{
    _Check_return_
    void* __clrcall bsearch(...);
}
#endif

我不明白为什么编译CLI项目会产生冲突.

下面是我链接这两个项目的方式:

  • 我将原始项目作为依赖项添加到CLR

  • 在Linker=>input=>Delay加载的dll中,我添加了Original_project.dll(我想这是用来在以后添加ASP.NET项目)

  • 在C/C++=>General=>其他include目录中,我添加了原始项目的路径

我使用Visual Studio Community 2019版本16.4.2

有人知道如何防止此类错误发生吗?非常感谢!

推荐答案

我遇到了同样的问题。我在使用

时遇到相同的错误

Vector和Mat(OpenCV)

这只是IntelliSense错误。似乎是智能感知中的错误。 我将模式更改为"仅生成",错误已消失。

这篇关于链接C++和C++/CLI项目(.NET Core)时出现导入错误(E0337)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
quot;Overflowquot; compiler error with -9223372036854775808L(编译器错误-9223372036854775808L(Q;溢出Q))
Visual Studio 2010 ReportViewer Assembly References(Visual Studio 2010 ReportViewer程序集引用)
Weird behaviour when I open a reportviewer in WPF(在WPF中打开报表查看器时出现奇怪的行为)
how do i pass parameters to aspnet reportviewer(如何将参数传递给aspnet report查看器)