链接 C++ 和 C++/CLI 项目 (.NET Core) 时导入错误 (E0337)
Import error (E0337) while linking C++ and C++/CLI projects (.NET Core)
我目前正在尝试建立一个 .NET 项目。我有一个现有的 C++ 后台项目,我想在 Web 界面上显示。为此,我试图通过 CLR Class 库 .NET Core(最终 link 将我的 C++ link到 ASP.NET 网络界面 但这是下一步)。
当我尝试将原始文件导入 C++/CLI 项目时,我的问题来了。当我尝试导入的文件使用 C++ 向量 (#include <vector>
) 时,我在文件 corecrt_search.h 中收到八个错误,所有错误都包含 E0337 linkage specification is incompatible with previous "bsearch_s" (decalred at line 26)
(作为 windows10个工具包文件)。您可以在 this screenshot 上查看错误的完整内容。
其他错误分别是函数qsort_s、bsearch、_lfind_s、_lfind、_lsearch_s、_lsearch和qsort的第35、48、64、74、83、93行和 56.
当我导入的文件不使用矢量时不会出现错误。
文件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 项目会产生冲突...
以下是我link编辑这两个项目的方式:
我将原始项目作为依赖项添加到 CLR
在 Linker => Input => Delay loaded Dlls 中,我添加了 original_project.dll (我认为之后添加 ASP.NET 项目很有用)
在C/C++ => General => Additional Include Directories中,我添加了原项目的路径
我致力于 Visual Studio Community 2019 版本 16.4.2
有谁知道如何防止这样的错误发生?非常感谢!
我遇到了同样的问题。我在使用
时遇到了同样的错误
vector and Mat(OpenCV)
这只是 IntelliSense 错误。似乎是 IntelliSense 中的错误。
我将模式更改为“仅构建”,错误消失了。
我目前正在尝试建立一个 .NET 项目。我有一个现有的 C++ 后台项目,我想在 Web 界面上显示。为此,我试图通过 CLR Class 库 .NET Core(最终 link 将我的 C++ link到 ASP.NET 网络界面 但这是下一步)。
当我尝试将原始文件导入 C++/CLI 项目时,我的问题来了。当我尝试导入的文件使用 C++ 向量 (#include <vector>
) 时,我在文件 corecrt_search.h 中收到八个错误,所有错误都包含 E0337 linkage specification is incompatible with previous "bsearch_s" (decalred at line 26)
(作为 windows10个工具包文件)。您可以在 this screenshot 上查看错误的完整内容。
其他错误分别是函数qsort_s、bsearch、_lfind_s、_lfind、_lsearch_s、_lsearch和qsort的第35、48、64、74、83、93行和 56.
当我导入的文件不使用矢量时不会出现错误。
文件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 项目会产生冲突...
以下是我link编辑这两个项目的方式:
我将原始项目作为依赖项添加到 CLR
在 Linker => Input => Delay loaded Dlls 中,我添加了 original_project.dll (我认为之后添加 ASP.NET 项目很有用)
在C/C++ => General => Additional Include Directories中,我添加了原项目的路径
我致力于 Visual Studio Community 2019 版本 16.4.2
有谁知道如何防止这样的错误发生?非常感谢!
我遇到了同样的问题。我在使用
时遇到了同样的错误vector and Mat(OpenCV)
这只是 IntelliSense 错误。似乎是 IntelliSense 中的错误。 我将模式更改为“仅构建”,错误消失了。