Windows 上的 /usr/lib/ 相当于什么?

2023-11-24

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


真正相当于/usr/lib/在 Windows 中确实是%windir%\system32,因为它是始终是 Windows 查找 DLL 的(最后)位置.

但是,简单地转储你的库就是 DLL Hell 之所以存在的部分原因。这就是引入COM系统的原因;如果您的 DLL 是 COM 类的“服务器模块”,您可以注册它(例如通过regsvr32实用程序),之后应用程序可以通过CoCreateInstance()功能。在这里,注册表的目的是/usr/lib/,但完全不同。

在现代 Windows 版本中,不再需要显式注册(免注册)并排组件。事实上,有时需要显式取消程序集注册才能与这个新系统很好地配合。在这个意义上说,%SystemRoot%\winsxs相当于/usr/lib/,但以一种更复杂的方式。


因为这乱七八糟的事情,你的根本问题的答案---“我该去哪里寻找libxml2?" --- 就是“你不会找到它”。与为模块化而设计的操作系统不同,您通常不会在 Windows 上安装单独的库。如果你想构建libxml2,您可以捆绑.lib与您的来源一起归档,或告诉用户提供它。如果您想部署构建,请部署libxml2与您的应用程序一起(静态链接或作为应用程序目录中的 DLL)。

即使它是在系统范围内安装的,因为libxml2没有考虑到 Windows 特定的概念,唯一可以找到它的地方是%windir%\system32。不过,没有人有胆量把它放在那里。


注意:我不太熟悉 COM 和 .NET,因此上述内容可能不完全准确。如果有人想改进这个答案,我愿意将其变成社区维基。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 上的 /usr/lib/ 相当于什么? 的相关文章

随机推荐

  • Bootstrap 方法返回 null - Android 在启动时立即崩溃

    React Native 和 React native navigation 的新手 应用程序在 iOS 上运行正常 但在启动时很快抛出以下异常 E AndroidRuntime FATAL EXCEPTION main Process c
  • Apache 反向代理到节点 - 连接被拒绝:AH00957

    我正在尝试让一个全新的基于云的服务器与默认版本的 20 04 服务器 ubuntu 一起使用 apache 和节点 节点服务器似乎正在运行 没有报告 4006 端口已打开的问题 但我相信我的 apache 配置不是 该请求将挂起很长一段时间
  • Flash Builder 中的输出文件名

    我是第一次尝试 Flash Builder 但我陷入了一个简单的任务 如何更改输出文件名 默认情况下 Flash Builder 为 SWF 提供与入口点类相同的名称 但我找不到任何地方可以更改它 Anybody 只需在编译和构建时更改主应
  • 在 Java 线程中模拟竞争条件的代码

    我是 Java 多线程新手 我正在学习竞争条件的概念 基于Oracle文档 http docs oracle com javase tutorial essential concurrency interfere html 我创建了一个示例
  • 使用 mapstruct 将 null 设置为 target

    我正在使用 mapstruct 我想知道是否有任何方法可以为某些目标属性设置 null 值 例如 public class MySource private String prop1 private String prop2 public
  • 使用 Openxml 2.0 在 Excel 中获取单元格背景颜色

    我正在尝试获取 Excel 电子表格中单元格的背景颜色 我正在使用 Open XML 2 0 SDK 我可以打开 xlsx 文件并获取单元格值 我获取背景颜色的代码如下 public BackgroundColor GetCellBackC
  • 设置 Gradle 缓存目录?

    是否可以设置 Gradle 缓存目录 而无需设置 GRADLE USER HOME 环境变量 我希望 Gradle 缓存与我的代码存在于同一工作区中 但这似乎只有通过围绕 Gradle 的 bash 脚本才能实现 为了澄清起见 我正在讨论包
  • Svc 处理程序到 SMC 调用

    如何用C编写svc处理程序来调用SMC 监视模式 指令以切换到arm cortex a9的监视模式 即从管理模式到监视模式需要在 svc 处理程序中完成哪些操作 如何在 C 中编写相同的内容 详细的答案值得赞赏 示例可以在 Linux 源代
  • 在 Python 中初始化 2D 列表:如何对每一行进行深拷贝?

    假设我想初始化一个全为 0 的 2D Python 列表 我会这样做 test 0 0 10 10 然后我开始修改第一个列表中的值 test 0 0 1 0 但这会由于某种原因影响所有列表的第一项 print test 1 0 0 0 0
  • 检测文本溢出已起作用并添加包含全文的工具提示

    我有一个包含电子邮件地址的简单跨度 span email protected span 在我的 CSS 中 跨度设置为固定宽度并带有省略号溢出 email display inline block width 100px overflow
  • maven支持kapt吗?

    是否可以在基于 Maven 的项目中运行 kapt kotlin 注释处理 如果是 我如何将 kapt 集成到 Maven 构建系统中 自 Kotlin 1 1 2 起 现在支持 Gradle 和 Maven 来运行 KAPT 插件 这记录
  • 无法通过引用传递参数 2 - uuid PDO

    我正在尝试插入UUID 和我的INSERT query handle gt beginTransaction Define query query INSERT INTO users users uuid type id VALUES uu
  • if-else-if 阶梯的两个部分的条件语句均为 true

    如果你有这样的代码 if A gt X B gt Y Action1 else if A gt X B gt Y Action2 With A gt X and B gt Y 将两个部分if else if梯子被执行 我正在处理存在此问题的
  • 多彩多姿的占位符文本

    我需要创建一个具有彩色占位符文本的 HTML 文本输入元素 所有文本都应为灰色 但结束星号应为红色 如下所示 在我看来 这是一项看似简单的任务 但实际上要复杂得多 因为浏览器限制了我们设置本机输入元素样式的能力 我听说有人使用 CSS 来覆
  • 什么是应用程序之间的本机消息传递以及它如何工作?

    Chrome 开发者文档提到了一个叫做Native Messaging直接从 Chrome 扩展程序或应用程序与其他桌面应用程序进行通信 我如何判断桌面应用程序何时具有此类可用的本机消息传递以及它可以接受哪种类型的通信 有没有办法让应用程序
  • documentdb 模拟器 gatewayservice 在启动时崩溃

    我想了解 documentdb 并安装模拟器 看起来没有错误 但是 启动后我的服务崩溃了 网关服务启动 从标题来看 我猜测这是模拟器的一项重要服务 有趣的是 模拟器似乎继 续加载并尝试打开 https localhost 8081 expl
  • 如何将答案转换为小数点后两位

    这是我的代码 我想要的输出是txtA Text and txtB Text保留两位小数 Public Class Form1 Private Sub btncalc Click ByVal sender As System Object B
  • 为什么 EF 5.x 对表使用复数名称?

    我对 ORM 框架 例如 Hibernate 甚至 Entity Framework 3 0 有一些经验 默认情况下 这些框架使用表的单数名称 例如 类 User 将映射到表 User 但是 当我使用 Visual Studio 2012
  • 使具有不可选取字段的对象可选取的正确方法是什么?

    对我来说 我所做的就是检测不可选取的内容并将其放入字符串中 我想我也可以将其删除 但随后它会错误地告诉我该字段不存在 但我宁愿让它存在但成为字符串 但我想知道是否有一种不那么老套 更正式的方式来做到这一点 我当前使用的代码 def make
  • Windows 上的 /usr/lib/ 相当于什么?

    我正在创建一个依赖于 libxml2 的跨平台程序 我不想在应用程序的 Windows 端口上使用 POSIX 环境 例如 Cygwin 或 MSYS 我计划使用 Javascript Host for Windows 和 nmake 创建