我有一个 C++ 类,我想从 C# 应用程序访问它。我需要访问构造函数和单个成员函数。目前,该应用程序接受 STL::vector
形式的数据,但如果这不太可能工作,我可以做一些转换吗?
我在网上找到了几篇描述如何调用 C++ DLL 的文章,还有一些文章描述了如何为其他目的制作 .dll 项目。我正在努力寻找在 Visual Studio 2008 中创建它们以用于 C# 应用程序的指南(尽管 VS 6.0 似乎有一些,但它们指定的大多数选项似乎没有出现在 2008 版本中).
如果有人能提供分步指南或相当基本的示例,我将不胜感激。
最佳答案
在 C++ 和 C# 之间进行互操作的最简单方法是使用托管 C++,或称为 C++/CLI。在 VisualStudio 中,新建一个类型为“CLR 类库”的 C++ 项目。您希望 C# 可以使用的部分有一些新语法,但您可以像往常一样使用常规 C++。
在这个例子中,我使用 std::vector<int>
只是为了表明您可以使用标准类型 - 然而,在实际应用程序中,我更愿意尽可能使用 .NET 类型(在本例中为 System::Collections::Generic::List<int>
)。
#pragma unmanaged
#include <vector>
#pragma managed
public ref class CppClass
{
public:
CppClass() : vectorOfInts_(new std::vector<int>)
{}
// This is a finalizer, run when GC collects the managed object
!CppClass()
{ delete vectorOfInts_; }
void Add(int n)
{ vectorOfInts_->push_back(n); }
private:
std::vector<int>* vectorOfInts_;
};
编辑:将类更改为通过指针而不是值来保存 vector 。
关于c# - 如何在 Visual Studio 2008 中创建用于 C# 应用程序的 .dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/877888/