如何在 Visual C++ 中使用使用 C# 创建的 dll?
Posted
技术标签:
【中文标题】如何在 Visual C++ 中使用使用 C# 创建的 dll?【英文标题】:How to use dll created using C# in Visual C++? 【发布时间】:2013-12-13 10:11:48 【问题描述】:这是我所做的步骤。
我使用 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
现在如何解决这个错误?
【问题讨论】:
【参考方案1】:C# 代码放在一个类中,比如MyClass
。如果要在 C++/CLI 中调用该类的静态成员,则需要使用MyClass::MyFunction(0)
。
最后,您需要添加命名空间:MyNamespace::MyClass::MyFunction(0)
。
【讨论】:
谢谢@JeffRSon .. 它奏效了。我已经解决了这个问题。【参考方案2】:您可以使用 /clr 标志编译您的 C++ 程序,并使用 C++/CLI 简单地调用任何 .NET 代码(只要包含对它的引用)。
您还可以为您的 C# 代码(在 DLL 中编译)使用 COM 可调用包装器 -> check this article
【讨论】:
以上是关于如何在 Visual C++ 中使用使用 C# 创建的 dll?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual C++ 中制作 dll,我想用 C# 进行交互
如何使用 Visual Studio Express 2013 将 C# 接口实现/合并到一个简单的 C++ 程序中
如何在Visual Studio中选择C++和C#的编译器版本