c++ - 链接 C++ 和 C++/CLI 项目 (.NET Core) 时出现导入错误 (E0337)
问题描述
我目前正在尝试建立一个 .NET 项目。我有一个现有的 C++ 后台项目,我想在 Web 界面上显示。为此,我试图通过CLR 类库 .NET Core将我的 C++ 链接到 .NET 平台(并最终将其链接到ASP.NET Web 界面,但这是下一步)。
当我尝试将原始文件导入 C++/CLI 项目时,我的问题就出现了。当我尝试导入的文件使用#include <vector>
C E0337 linkage specification is incompatible with previous "bsearch_s" (decalred at line 26)
++向量(您可以在此屏幕截图中看到错误的全部内容。
其他错误分别是第 35、48、64、74、83、93 和 56 行的函数 qsort_s、bsearch、_lfind_s、_lfind、_lsearch_s、_lsearch 和 qsort。
当我导入的文件不使用向量时,不会出现错误。
文件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
在链接器 => 输入 => 延迟加载的 Dlls 中,我添加了 original_project.dll(我认为之后添加 ASP.NET 项目很有用)
在 C/C++ => General => Additional Include Directories 中,我添加了原始项目的路径
我在 Visual Studio Community 2019 版本 16.4.2 上工作
有谁知道如何防止这种错误发生?非常感谢!
解决方案
推荐阅读
- python - 为什么这些 Keras Sequential 模型和 Functional API 行为不同?
- keras - 如何预训练 CNN 以将 CNN 权重传递给 LSTM?
- c# - Raycast 曾经阻止玩家穿过墙壁,只有一半的时间工作
- microsoft-teams - 列出 MS Teams 中用户的聊天消息引发禁止错误 - Graph Api
- xml - (Recursion-2) 所有深度级别元素的自动递增并保持遗传路径
- python - Python-Loop:从 opentopomap.org 下载 .png 并将单个 png 文件连接成一张大图
- amazon-s3 - 来自 S3 的 MemSQL 管道将 NULL 插入 DATE 类型列
- java - 如何返回一个子类独有的变量?
- javascript - 3DS 检查后条带订阅不完整
- javascript - Tampermonkey 如何在两个不同的网站上使用它