首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >什么等同于Windows上的/usr/lib/?

什么等同于Windows上的/usr/lib/?
EN

Stack Overflow用户
提问于 2016-07-06 17:24:04
回答 1查看 12.8K关注 0票数 8

我正在创建一个依赖于libxml2的跨平台程序。我不想在应用程序的Windows端口上使用POSIX环境,如Cygwin或MSYS。我计划创建一个使用Windows和nmake的Javascript主机构建脚本系统。但是,出现了构建系统应该在哪里寻找libxml2的问题。当用户没有指定位置时,它应该显示在什么位置?在Linux上,它通常是/usr/lib/和/usr/local/lib/。但在Windows上,脑海中唯一浮现的位置是C:\Windows\system32。但是,该目录不是只由系统修改吗?(我显然对Windows的内部原理几乎一无所知)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-06 18:07:58

在Windows中,真正等同于/usr/lib/的是%windir%\system32,因为它就是always the (last) place where Windows looks for DLLs

但只是简单地转储你的库,这就是为什么DLL地狱是一件事情的部分原因。这就是引入COM系统的原因;如果您的DLL是COM类的“服务器模块”,则可以注册它(例如,通过regsvr32实用程序),之后应用程序可以通过CoCreateInstance()函数动态地链接到它提供的类。在这里,注册表服务于/usr/lib/的用途,但它完全不同。

在现代Windows版本中,(registration-free) side-by-side assemblies不再需要显式注册。事实上,有时需要显式地取消程序集的注册才能很好地使用这个新系统。从这个意义上说,%SystemRoot%\winsxs等同于/usr/lib/,但以一种更加复杂的方式。

由于这种混乱,你的基本问题的答案-“我应该在哪里找libxml2?”-是“你找不到它”。与为模块化而设计的操作系统不同,您通常不需要在Windows上安装单独的库。如果您想要基于libxml2进行构建,您可以将.lib文件与源代码捆绑在一起,或者告诉用户提供它。如果要部署构建,则将libxml2与应用程序一起部署(静态链接,或作为应用程序目录中的DLL )。

即使它是在整个系统范围内安装的,因为libxml2并不是为特定于Windows的概念而设计的,所以唯一能找到它的地方就是%windir%\system32。然而,没有人有胆量把它放在那里。

注意:我不太精通COM和.NET,因此上面的内容可能并不完全准确。如果有人想要改进这个答案,我愿意把它变成一个社区维基。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38230041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文