添加到 C++应用程序 C# GUI
我想将我的 C++ 应用程序添加到 C# .NET GUI 。 我的 C++ 应用程序非常简单,但我有一些 Pointer 和 Reference 。
C# 识别此指针和引用的最佳方式是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想将我的 C++ 应用程序添加到 C# .NET GUI 。 我的 C++ 应用程序非常简单,但我有一些 Pointer 和 Reference 。
C# 识别此指针和引用的最佳方式是什么?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
有多种方法,这里有一些,这取决于您的品味和您的项目。
a) 如果您的 C++ 项目是用 COM 编写的,请使用 COM 互操作。
b) 使用 COM 互操作,您可以将 COM 包装器编写到 C++ 应用程序中并从 C# 中使用它。
c) 使用 C++/CLI,即将您的项目转换为托管 C++ 应用程序,并在 C++ 中创建使用您的 C++ 代码的托管类。
您还可以编写加载 C++ dll 或静态库的托管 C++ dll。
d) 使用 P INVOKE C 调用,从与 C++ 类一起使用的 C++ 代码导出 DLL C 函数,使用 [dllimport] 属性从 C# 调用 C 函数。
您可以使用 IntPtr 类型和更好、更安全的 SafeHandle 来表达指针和引用。
所有方法都有优点和缺点,但是每个列出的技术都需要一个“中间层”,你不能直接从 C# 调用 C++ 代码。
There are several ways, here are some, and it depends on your taste and on your project.
a) Use COM interop, if your C++ project is written in COM.
b) Use COM interop, you can write COM wrappers to your C++ application and use it from C#.
c) Use C++/CLI, that is, convert your project to become a Managed C++ application and create managed classes in C++ that use your C++ code.
You can also write a managed C++ dll that loads your C++ dll or static library.
d) Use P INVOKE C calls, exports DLL C functions from your C++ code that work with your C++ class, call the C functions from C# using [dllimport] attribute.
You can use type IntPtr and the better and safer SafeHandle to express pointers and references.
All ways have good things and drawbacks, but every listed tehcnique need a "middle layer", you cannot call C++ code directly from C#.
如果我理解正确的话,您想在基于 C# 的 UI 应用程序中使用用 C++ 程序编写的功能。
您可以通过创建基于 C++/CLI 的 dll 来完成此操作。 C++/CLI 可以轻松调用 C++ 代码,C# 可以轻松调用 C++/CLI 代码。通过这种方式,您可以在基于 C# 的程序中使用用 C++ 编写的功能。
有关所有可能的方法,请参阅 此帖子
If I understand correctly you want to use the functionality written in C++ program in a C# based UI application.
You can do this by creating a C++/CLI based dll. C++/CLI can call C++ code easily and C# can easily call C++/CLI code. In this way you can use functionality written in C++ in a C# based program
For all possible ways see this post