【问题标题】:Problems adding a UserControl referencing a C++/CLI wrapper to a unmanaged dll to a form将引用 C++/CLI 包装器到非托管 dll 的 UserControl 添加到表单时出现问题
【发布时间】:2013-03-19 00:29:05
【问题描述】:

我的 UserControl 将 C++/CLI 包装器引用到非托管 C++ dll。当我尝试将 UserControl 添加到表单时,出现 Visual Studio 错误,提示“无法创建组件 'userControl'”,原因是 System.IO.FileNotFoundException。

据我所知,问题源于 Visual Studio 未复制 C++/CLI 包装程序集的非托管依赖项。如果我将非托管依赖项放在系统 PATH 上,一切正常。

有更好的方法吗?

【问题讨论】:

    标签: c# .net c++-cli user-controls


    【解决方案1】:

    最简单的做法是将实际的 .dll 包含在您的项目中,将其构建操作标记为“内容”,然后将“复制到输出目录”设置为“始终”。这应该将 .dll 放到您的输出目录中,以便您的应用程序可以运行,并且只需将文件包含在项目中,就应该将它放在项目目录中,以便设计人员可以找到它。

    确保您的设置项目也包含该项目的内容文件的项目输出。

    编辑

    如果这些不起作用,您还可以编辑项目本身的引用路径(在项目属性中),尽管我不确定这会影响设计器。如果不是这样,那么您唯一真正的选择是将 .dll 放在系统路径目录之一中。

    【讨论】:

    • 我尝试按照您的建议对 C++/CLI 包装器项目和用户控件所在的项目进行操作,但无济于事。
    • 编辑以提供一些额外的想法。
    【解决方案2】:

    旧线程,但提交我的解决方案,因为我刚刚遇到问题并在处理过程中发现了这个问题。

    基本上,我只是将本地 DLL 延迟加载到我的包装 C++/CLI 库中。由于包装器的 C++/CLI 部分包含 Visual Studio 和框架使用的接口规范,因此永远不需要或加载本机 DLL。我也在这个问题中回答了更多细节: https://stackoverflow.com/a/15481687/34440

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 2018-04-04
      • 1970-01-01
      相关资源
      最近更新 更多