web应用程序上下文中win32 dll和.net dll之间的区别?

Posted

技术标签:

【中文标题】web应用程序上下文中win32 dll和.net dll之间的区别?【英文标题】:Difference between win32 dll and .net dll in the context of web application? 【发布时间】:2011-01-25 11:24:57 【问题描述】:

我的 Web 应用程序,用 WPF(XBAP) 编写,p/调用一个 win32 dll(player.dll 用 C 和 C++ 编写)。我部署了应用程序。当我尝试在 IE 中运行 Web 应用程序时,最初我收到此错误:

System.DllNotFoundException: 无法 加载 DLL 'Player.dll':指定 找不到模块。 (例外 来自 HRESULT:0x8007007E)

但是,当我手动将我的 win32 dll 复制到客户端 PC 的 C:\Windows\System32 时,它仍然有效,即使我的 Web 应用程序使用了其他几个 .Net dll 并且我没有手动复制它们。

所以我很困惑为什么我需要将 only win32 dll 复制到客户端 PC,而不是 .Net dll? Web 应用程序是否以不同方式访问它们?

--

相关话题是这样的:

DllNotFoundException when web application p/invokes a win32 DLL

【问题讨论】:

【参考方案1】:

定位程序集 (.NET) 的规则与定位本机 DLL 的规则不同。以下是两个规则集:

组件:http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx Win32 DLL:http://msdn.microsoft.com/en-us/library/ms682586(v=vs.85).aspx

【讨论】:

“本机 DLL”是指操作系统或/和 Visual Studio 附带的那些 dll?它还包括我自己在 VC++ 中创建的那些吗? 本地 DLL 是指任何非 .NET 程序集 DLL。本机 DLL 导出函数和数据以及资源。示例是系统组件,例如 User32.dll 以及您使用 VisualC++ 构建的 DLL。另一方面,程序集不导出任何内容(导出表为空)。这些是供 CLR 使用的特殊(非本机)DLL,您可以从任何 .NET 语言中使用它们。

以上是关于web应用程序上下文中win32 dll和.net dll之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

win10电脑运行cmd提示api-ms-win-core-console-l2-2-0.dll 丢失,怎么怎么办呢

ImportError DLL load failed: %1 不是有效的 Win32 应用程序

Python ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。

Python ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。

Scard32.dll 和类似的

Win32环境下从ntdll.dll调用Nt函数,C++