以下是我所做的步骤。
我使用C#创建了一个.dll文件,内容为
public static int MyFunction(int dummy)
{
MessageBox.Show("I am in dll");
return 0;
}
我还创建了一个内容为
的MFC应用程序(exe)int main()
{
int a = MyFunction(0);
return 0;
}
这是打电话的正确方法吗?
注意:
我。我已将我的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
现在如何解决错误?
答案 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