如何链接/引用托管DLL的非托管依赖项?

时间:2016-02-10 14:21:36

标签: c# dll dependencies unmanaged managed

我的解决方案(在Visual Studio 2010中)包含以下项目:

  • CppLibrary :本机C ++库(生成.lib)
  • CliLibrary :包装本机C ++库的托管C ++ / CLI库(生成.dll)
  • CsharpGUI :使用托管库的C#GUI项目(生成.exe)

在CliLibrary中我链接 CppLibrary.lib ,在CsharpGUI中我引用了 CliLibrary.dll 。到目前为止一切都很好。

现在我必须在我的CppLibrary中使用第三方库(OCCT)。我可以访问的OCCT库是静态(.lib)或动态(.dll)。我尝试了以下方法:

  1. 在CppLibrary属性中,我添加了OCCT包含文件的路径(C / C ++> General> Additional Include Directories)
  2. 在CliLibrary属性中,我向链接器提供了所需的OCCT库(.lib)(链接器>常规>其他库目录,链接器>输入>附加依赖项)
  3. 我没有更改CsharpGUI中的任何内容
  4. 在这种状态下,我的解决方案构建没有错误。但是,在运行时,我的应用程序立即抛出以下异常:

      

    无法加载文件或程序集' CliLibrary.dll'或其中一个依赖。

    我认为在CsharpGUI级别不知道/找不到非托管OCCT库(它们是托管CliLibrary的依赖关系)。我认为问题是在this线程中解决的,但提出的解决方案并没有解决我的问题。按照this线程中的想法,我尝试将所需的OCCT dll复制到与CsharpGUI.exe相同的目录中,这也没有解决问题。

    当然,我不是第一个应对这样一个项目/图书馆层级的人。

    • 我应该如何解决这个问题?
    • 我使用了错误的做法吗?

0 个答案:

没有答案