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

C# 如何链接/引用托管DLL的非托管依赖项?,c#,dll,dependencies,unmanaged,managed,C#,Dll,Dependencies,Unmanaged,Managed,我的解决方案(在Visual Studio 2010中)包含以下项目: 强> CPPLiBARARE:一个本地C++库(生成.LIB) > CliLibrary > >:管理本地C++库(生成A.DLL)的托管C++/CLI库 CsharpGUI:使用托管库的C#GUI项目(生成一个.exe) 在CliLibrary中,我链接到CppLibrary.lib,在CsharpGUI中,我有对CliLibrary.dll的引用。到目前为止还不错 现在我必须在我的CPP库中使用第三方库(OCCT

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

    强> CPPLiBARARE<强>:一个本地C++库(生成.LIB) > CliLibrary > <强> >:管理本地C++库(生成A.DLL)的托管C++/CLI库
  • CsharpGUI:使用托管库的C#GUI项目(生成一个.exe)
在CliLibrary中,我链接到CppLibrary.lib,在CsharpGUI中,我有对CliLibrary.dll的引用。到目前为止还不错

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

  • 在CppLibrary属性中,我添加了OCCT包含文件的路径(C/C++>General>Additional include目录)
  • 在CliLibrary属性中,我向链接器提供了必需的OCCT库(.lib)(链接器>常规>附加库目录,链接器>输入>附加依赖项)
  • 我没有在CSGUI中更改任何内容
  • 在这种状态下,我的解决方案生成时不会出错。但是,在运行时,我的应用程序会立即引发以下异常:

    无法加载文件或程序集“CliLibrary.dll”或其依赖项之一

    我假设非托管OCCT库(托管CLIBrary的依赖项)在CSGUI级别上未知/找不到。我认为这个问题在线程中得到了解决,但提出的解决方案并没有解决我的问题。按照thread中的想法,我尝试将所需的OCCT DLL复制到与CsharpGUI.exe相同的目录中,这也没有解决问题

    当然,我不是第一个处理这种项目/库层次结构的人

    • 我应该如何着手解决这个问题
    • 我是否使用了错误的方法

    “或其依赖性之一”是最明显的线索。您确实有新的依赖项。您可以将DLL复制到操作系统可以找到它们的地方。唯一的好位置与EXE位于同一目录中,请使用生成后事件复制它们。如果仍然有问题,则可能是本机DLL需要的DLL。使用SysInternals的进程监视器查看您的程序是否正在搜索它。或者打电话。@HansPassant谢谢你的回答。正如您所建议的,缺少第三方库所需的DLL。我应该如何标记你的评论作为对我问题的回答?我是这个论坛的新手。