无法从C+;调用静态C#方法+/Cli

无法从C+;调用静态C#方法+/Cli,c#,.net,visual-studio,c++-cli,C#,.net,Visual Studio,C++ Cli,我试图从C++/Cli调用一个C#方法。此方法在ClassLibrary1.dll中定义。我不断得到以下错误: “System.MissingMethodException”类型的未处理异常 发生在未知模块中 其他信息:找不到方法:“Int32” ClassLibrary1.Class1.getNum() 以下是我的C++/Cli代码: //CppClr.cpp #include "CppClr.h" #using "ClassLibrary1.dll" using namespace Cla

我试图从C++/Cli调用一个C#方法。此方法在
ClassLibrary1.dll
中定义。我不断得到以下错误:

“System.MissingMethodException”类型的未处理异常 发生在未知模块中

其他信息:找不到方法:“Int32” ClassLibrary1.Class1.getNum()

以下是我的C++/Cli代码:

//CppClr.cpp

#include "CppClr.h"
#using "ClassLibrary1.dll"
using namespace ClassLibrary1;
int main()
{
    System::Console::WriteLine("Start");
    int num = Class1::getNum();
    System::Console::WriteLine(num);
    System::Console::ReadLine();
}
我的C#代码:


MissingMethodException总是由运行时加载错误的程序集引起的。通常是旧的

在同时具有C#和C++/CLI项目的解决方案中容易犯错误。它们有不同的标准,C#程序集构建到项目的bin\Debug目录,而C++/CLI项目构建到解决方案的Debug目录。您可能已经发现了这一点,通过自己复制C#程序集修复了它,并在更改C#代码后忘记再次执行


只需确保两个项目构建到同一目录即可。右键单击C#项目>属性>生成选项卡>输出路径设置。将其从“bin\Debug”更改为“.\Debug”。对发布配置重复上述步骤。重建并验证您在解决方案的调试目录中看到了EXE和DLL的最新副本。

是否可能您正在尝试访问旧版本的C#DLL?如果它编译但在运行时失败,我会说您使用的DLL版本错误。你们都是对的,它是旧版本!!!(令人尴尬)。谢谢你,现在开始工作了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ClassLibrary1
{
    public class Class1
    {
        public static int getNum()
        {
            return 5;
        }
    }
}