我有一个 C++ 项目,它包含一些头文件、cpps、一些 lib 文件和 DLL 文件。
我想包装这些文件以便在 C# 项目中使用它们。
我想制作一个包含所有 C++ 项目的 DLL,然后用 C# 类包装它,这样我就可以使用它了。
所以我的问题是(使用 Visual Studio 2010):
如何制作最终的 DLL 文件。
一个。我知道如何将 lib 文件链接到项目,但如何链接 DLL?
我需要将什么添加到我的 header 中,以便将其中声明的函数(在 lib 文件中实现)导入到 DLL 中。 (什么是 __declspec)?
- 构建最终的 DLL 文件后,如何创建使用此 DLL 文件的 C# 项目?
提前致谢
这称为 (COM) InterOp。幸运的是,原始 .NET Framework 的主要设计目标之一是促进托管代码和非托管代码之间的轻松互操作性。从广义上讲,在处理托管代码时,人们可能希望实现三种不同类型的互操作性。
将数据从托管领域移动到非托管领域的过程称为编码。这是跨某个边界或其他边界对数据及其关联类型进行序列化的名称。为了支持这个过程,System.Runtime.InterOp 命名空间下存在一组类。
从广义上讲,该过程基本上如下:
- 确定函数名称(我使用 Dependency Walker)
- 确定函数签名(如果是 MSFT 的,请在 MSDN 上查找)
- 确定代码所需的数据类型和结构
- 编写托管代码以调入满足上述条件的 native 代码
- 测试编写后的包装代码以确保它产生预期的结果(这通常是最乏味的部分)