c# - 如何在 Visual Studio 2008 中创建用于 C# 应用程序的 .dll?

标签 c# c++ visual-studio-2008 dll

我有一个 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/

相关文章:

c# - WebClient AsyncUpload 进度百分比始终返回 50%

visual-studio-2008 - 项目范围 "Remove and Sort Usings"

visual-studio - CodeRush XPress |代码 Intelliassist 快捷方式

c++ - move 变量在 std::move 之后是否有效?

c++ - DirectX CreateBuffer 内存泄漏

c++ - 从文件读取的浮点值和计算差异

c# - 转换器在运行时没有被调用

c# - 如何将消息从子用户控件传递给父级

c# - 在另一个应用程序中操作滚动条窗口

c++ - 编译器可以优化 dynamic_cast 吗?