gpt4 book ai didi

C# 与 C++ 库对话 - AAF SDK

转载 作者:行者123 更新时间:2023-11-28 06:48:19 26 4
gpt4 key购买 nike

我正在尝试用 C# 读取 AAF 文件(描述编辑的视频和音频序列)。 AAF 是开源的,并且有可用的 C++ SDK http://sourceforge.net/projects/aaf/ .

我是一名 C# 编码员,虽然我了解一些 C++ 编码范例,但我的 C++ 基本上不存在。

我假设使用 pinvoke 可以实现交互,我之前曾使用它与 Win32 进行交互。对于 win32,我已经从 pinvoke.net 中提取了调用信息,但我不完全确定如何使用第三方 SDK 从头开始​​定义 pinvoke 入口点。

谁能帮我开始做这件事?例如,调用第三方 C++ 库的第一步是什么?是否有帮助自动化此过程的工具?

最佳答案

基本上有两种方法可以做到这一点:

使用 C++ Interop(隐式 PInvoke)

Visual C++ can interop with native C++ code .因此,您可以使用 Visual C++ 作为原生 C++ 和 C# 之间的桥梁。基本上,您必须在 Visual C++ 中编写包装器(或“代理”)类才能与 native C++ 对象进行交互。在幕后,此方法使用具有特定选项的 PInvoke(因此称为“隐式 PInvoke”),但它具有保留 native C++ 的面向对象结构的优点。请注意,此方法不可移植到 Mono。

使用良好的 PInvoke

You can use PInvoke with C++与将 PInvoke 与 C 一起使用的方式完全相同。但是有一个限制:您不能以这种方式调用 C++ 方法,因此您失去了 C++ 面向对象的结构。如果您使用的库提供了 C API,您可以使用它。否则,您必须创建一个小型 C++ 包装器,以 C 风格的自由函数的形式包装 C++ API。如果你有很多类要用这种方式包装,你可以使用 SWIG 自动包装。作为奖励,SWIG通过一些大师代码生成在 C# 中重新创建面向对象的结构。但是,使用 SWIG 需要一些设置,如果您只需要几个功能,我认为没有必要。

关于C# 与 C++ 库对话 - AAF SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24525394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com