【问题标题】:Why are c++ .dll not recognized in bin folder of asp.net webapp?为什么在 asp.net webapp 的 bin 文件夹中无法识别 c++ .dll?
【发布时间】:2016-06-14 16:05:52
【问题描述】:

我用 C# 在 Visual Studio 2015 中创建了一个带有 Razor 语法的 ASP.NET Web 应用程序。

我必须使用 20 个第三方原生 c++ dll 文件(其中大部分用于图像处理、libtiff-5.dll、libpng16-16.dll 等...)。

即使我手动将这些 dll 文件复制到 bin 文件夹中,该应用程序也无法运行。错误是:

无法加载文件或程序集“managedDllWrapper.DLL”或其依赖项之一。找不到指定的模块。

但是根据互联网上几乎所有的提示,复制到 bin 文件夹应该可以。

当我将 dll 复制到 C:\Windows 文件夹中时,webapp 可以完美运行,但只能在我的机器上本地运行。

另外,当我创建一个 C# 控制台应用程序而不是 web 应用程序时,复制到 bin 文件夹可以正常工作。

为什么它不适用于 web 应用程序?如何导入这些 dll?

  • 我无法将它们引用到项目的 Visual Studio 中,因为它们不是有效的 COM 程序集。

  • 这些 dll 没有通过 dllimport 导入到代码中,因为我不知道它们提供的具体功能。托管 dll 包装器使用 dll。

有什么想法吗?谢谢!

【问题讨论】:

  • 您正在创建什么类型的 Web 应用程序?您在 Web 应用程序中使用的是哪个版本的 .NET Framework?
  • 我用的是.NET 4.0,web应用应该是单页应用。

标签: asp.net dll dllimport bin web-application-project


【解决方案1】:

我没有一对一解决问题,但我成功绕过了问题:

通过使用显式 dllimport 重写 c#/c++ 包装器,我直接使用路径寻址 dll 文件。然后,依赖的 dll 只需与引用的 dll 位于同一文件夹中。这也适用于网络应用程序。

【讨论】:

    猜你喜欢
    • 2022-01-10
    • 2018-08-28
    • 2016-02-17
    • 2021-05-24
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多