gpt4 book ai didi

c# - VS2017 是否改变了 C# 命名空间在 C++ 中的访问方式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:04:46 25 4
gpt4 key购买 nike

我有一个用 C# 解决方案编写的命名空间,它输出一个 DLL。此 DLL 是另一个解决方案中 C++ 项目的外部依赖项。以前我使用的是 VS2013,但从那以后我开始迁移到 VS2017,我得到了

C2871 'Foo': a namespace with this name does not exist.

这是对我的 C++ 代码的基本解释。 “ExUtil”是 FooExceptionUtil 命名空间中的一个类。

    #include "FooExUtil.hh"

using namespace Foo::ExceptionUtil;

extern "C" {
void FooExUtilWriteMiniDump (int Option)
{
ExUtil::WriteMiniDump ((ExUtil::Option) Option);
}
}

我的 C# 命名空间如下所示:

    using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;

namespace Foo.ExceptionUtil
{
static public class ExUtil
{
//Option enum and WriteMiniDump routine defined here
}
}

我的 C# 解决方案输出一个由我的 C++ 解决方案外部引用的 DLL。就像我说的,我对使用 VS2013 没有任何问题。 VS2017 是否改变了外部引用的工作方式?我可以在 C++ 解决方案的对象浏览器中查看 namespace ,我什至可以一直查看到各个 Option enum 和 WriteMiniDump 例程。无论如何,命名空间已定义。

-谢谢

最佳答案

好吧,我想通了这个问题。我尝试访问的 C# DLL 是针对 .NET 4.5 框架构建的。 VS 平台工具集 v141 与 .NET 4.5 不兼容

我将我的 C# 应用程序升级到 .NET 4.7.1,但我的 C++ 项目仍然报告相同的错误。我最终不得不手动编辑 .vcxproj 文件,查找该部分,然后添加 TargetFrameworkVersion 标签,如下所示:

      <PropertyGroup Label="Globals">
<ProjectGuid>{B21965FA-2013-4309-92CB-9282FFAEC9E2}</ProjectGuid>
<RootNamespace>c2tcore</RootNamespace>
<Keyword>MFCProj</Keyword>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
<TargetFrameworkVersion>4.7.1</TargetFrameworkVersion>
</PropertyGroup>

在此之后我卸载了我的 C++ 项目,重新加载它,清理并重建它终于成功了。希望这对以后的其他人有所帮助。

关于c# - VS2017 是否改变了 C# 命名空间在 C++ 中的访问方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52539656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com