从非托管项目 (C/C++ VS2005) 调用托管代码 (C#/Visual Basic VS2010)

Calling managed code (C#/Visual Basic VS2010) from an unmanagened project (C/C++ VS2005)

简短版本:

有: 来自 Brüel & Kjær SDK 的 DLL 托管代码 (C#/Visual Basic)

需要: 与旧项目非托管代码 (C++ Visual Studio 2005) 中的 DLL 通信

长版:

我们有一个用 C/C++ (Visual Studio 2005) 编写的项目。现在我必须实现与新设备的通信。 (Brüel & Kjær 2250SDK 噪音)。

问题是,Brüel & Kjær 仅支持 C# 或 Visual Basic 库(托管代码)(Visual Studio 2010 及更高版本),但我们的项目是旧的 非托管 C/C++ 代码

所以,问题是,如何在我的旧 C++ 代码中使用 DLL? 我没有 DLL 的源代码,我只有 DLL。

我希望有人能帮我解决这个问题。提前致谢!

你想要的可能是C++/CLI(Common Language Infrastructure)。它基本上使您能够在 C++ 中使用 .NET 类型。有了它,您可以调用 C# DLL 并将 DLL 提供的数据用作 .NET 类型。因为你已经有了 C++ 代码的应用程序,我猜你不想完全重写它。您不必将托管类型转换为非托管类型,这可以通过 C++/CLI 实现。

如果您想了解更多,here is a lengthy MSDN article about it and here 是一个有用的小快速教程。