【问题标题】:Converting C++ project to a DLL to use in C# application [duplicate]将 C++ 项目转换为 DLL 以在 C# 应用程序中使用 [重复]
【发布时间】:2017-06-08 23:02:57
【问题描述】:

我几天来一直在寻找可以同时选择多个文件和多个文件夹的自定义 .NET 控件。

我发现的唯一一个正是我正在寻找的那个是下面的那个,但它是用 C++ 编写的。

https://www.codeproject.com/Articles/28015/SelectDialog-A-Multiple-File-and-Folder-Select-Dia

谁能告诉我如何让它在我的 C# 应用程序中工作?可以作为 DLL 引用,也可以仅将项目包含在我当前的解决方案中。

我尝试将其编译为非托管 DLL,然后从我的 C# 项目执行 DLLImport,但无法使其正常工作。

提前致谢。

【问题讨论】:

  • 该代码只是 GetOpenFileName()/IFileDialog API 的包装器,其中包含一些自定义设置。是什么阻止您直接在 C# 代码中使用这些 API 并进行相同的自定义设置?如果你必须走 DLL 路线,你需要准确解释什么不适合你。
  • 你能展示你写的DLLImport代码吗?

标签: c# c++ .net openfiledialog


【解决方案1】:

如果该类还没有为它创建的 C# 包装器,那就有点棘手了。你绝对确定你需要这个 C++ 控件吗?根据我的经验,除非你绝对必须,否则我会避免使用 .Net 库之外的东西。这很痛苦:0

看看这个 - 这是一个很好的指令列表: How to Marshal a C++ class

【讨论】:

  • 感谢您的链接。今晚我将尝试用 C# 重写控件,因为@remylebeau 提到它不应该太难。我会告诉你进展如何。
【解决方案2】:

我最终使用 Windows API 代码包的 ExplorerBrowser 创建了自己的自定义表单。它看起来就像 OpenFileDialog,但您可以同时选择多个文件和文件夹。

我还没有看到有人这样做,所以我以后可能会在某个地方发布一篇关于它的文章......

感谢您的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2011-10-25
    • 2011-06-08
    • 2012-11-02
    相关资源
    最近更新 更多