如何在Visual C ++中使用C#创建的dll?

时间:2013-12-13 10:11:48

标签: c# c++ visual-studio-2010 dll c++-cli

以下是我所做的步骤。

  1. 我使用C#创建了一个.dll文件,内容为

    public static int MyFunction(int dummy)
    {
        MessageBox.Show("I am in dll");
        return 0;
    }
    
  2. 我还创建了一个内容为

    的MFC应用程序(exe)
    int main()
    {
       int a = MyFunction(0);
       return 0;
    }  
    
  3. 这是打电话的正确方法吗?

    注意:

    我。我已将我的MFC应用程序更改为/ cl(公共语言运行时支持) II。我还在MFC的参考资料中添加了C#文件。

    我遇到的问题:

         Error  1   error C3861: 'MyFunction': identifier not found 
         Warning    2   warning C4793: 'MyDialog::`vcall'{132}'' : function compiled as native :    
    

    我在MyDialog.cpp文件中使用了以下命令作为最后一行,警告已经解决。

    #pragma unmanaged

    现在如何解决错误?

2 个答案:

答案 0 :(得分:1)

C#代码放在一个类中,比如MyClass。如果要在C ++ / CLI中调用此类的静态成员,则需要使用MyClass::MyFunction(0)。 最后,您需要添加命名空间:MyNamespace::MyClass::MyFunction(0)

答案 1 :(得分:0)

您可以使用/ clr标志编译C ++程序,并使用C ++ / CLI简单地调用任何.NET代码(只要包含对它的引用)。

您还可以为您的C#代码使用COM可调用包装器(在DLL中编译) - > check this article