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 应用程序。