问题标签 [dll]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
7746 浏览

windows - WinDbg Dr. Watson minidump - 需要最初为已安装版本构建的 pdb/dll?

我有一个来自目标应用程序崩溃的 mindmp 文件。我是否可以为某个软件版本重建 dll/pdb 文件并正确加载 windbg 符号?

我的问题是我们的 pdb 文件只保留在主要版本中(不幸的是)。这是一个每日构建,我可以自己重建,但我被错误绊倒了。

使用 !sym 嘈杂:“图像标题与内存图像标题不匹配。”

注意我已经用 dll 构建了 pdb,它们来自同一个 RELEASE 目录(我应该构建调试吗?)

这些是发布版本(因为发布版本安装在目标上并崩溃)我是否应该以某种方式使用调试构建 dll 来获取更多符号信息?

0 投票
7 回答
1081 浏览

dll - dll获取配置信息的最佳方式?

我们开发了许多由第三方 Windows 应用程序调用的自定义 dll。这些 dll 会根据需要加载/卸载。

大多数 dll 调用 Web 服务,这些需要配置 url、超时等。

因为 dll 不是永久保存在内存中的,所以每次调用它都必须读取配置。这对我来说似乎不是最理想的。

有没有更好的方法来处理这个?

注意:可配置信息位于 xml 文件中,以便 IT 部门可以根据需要进行更改。他们不会接受注册表编辑。

注意:这些 dll 为许多第三方应用程序提供服务,它本质上实现了一个外部 EDMS 接口。供应商不接受传递所需的参数。

注意:这是一个 .NET 应用程序,dll 是用 C# 编写的。本质上,当需要执行某种 EDMS 操作时,有厚(Windows 应用程序)和瘦客户端访问此 dll。EDMS 接口被定义为必须在 dll 中实现的一组调用,而 dll 决定如何实现 EDMS 功能,例如对于某些客户端,“注册文档”将更新数据库,而对于其他客户端,相同的调用将使用第三方EDMS系统。没有 ASP 客户端。

我的理解是当客户端想要访问 EDMS 操作时加载 dll,然后在调用完成时卸载。客户端可能暂时不需要执行另一个 EDMS 操作(在某些情况下超过一个小时)。

0 投票
3 回答
9737 浏览

winapi - GetExitCodeProcess() 返回 128

我有一个 DLL 作为扩展加载到第 3 方父进程中。在这个 DLL 中,我使用 CreateProcess API 实例化外部进程(我自己的)。这在 99.999% 的情况下都很好用,但有时这会突然失败并永久停止工作(也许重新启动父进程可以解决这个问题,但这是不可取的,在我解决问题之前我不建议这样做。)即使 CreteProcess() 没有报告错误并且 GetExitCodeProcess() 返回 128,外部进程也不再被调用,失败的症状是。这是我正在做的简化版本:

可以从 Windows 资源管理器或命令行手动调用外部进程,它可以自行启动。像这样调用它,在做任何实际工作之前,创建一个日志文件并记录一些关于它的信息。但是像上面描述的那样调用这个日志信息根本不会出现,所以我假设外部进程的主线程永远不会进入 main() (我现在正在测试这个假设。)

我至少可以做一件事来尝试规避问题(而不是启动暂停的线程),但我首先想先了解失败的根源。有谁知道什么可能导致这个以及如何解决它?

0 投票
18 回答
265752 浏览

c++ - 何时使用动态库与静态库

在 C++ 中创建类库时,您可以在动态 ( .dll, .so) 和静态 ( .lib, .a) 库之间进行选择。它们之间有什么区别,什么时候适合使用?

0 投票
3 回答
14926 浏览

dll - 将多个原生 DLL 合并为一个 DLL

我有很多小 DLL,我想将它们制作成一个大的(呃)DLL(如这里所建议的那样)。我可以通过合并我的项目来做到这一点,但我想要一种不那么侵入性的方式。

可以将多个 DLL 合并为一个单元吗?

快速搜索发现这个线程声称这是不可能的。还有人知道吗?

请注意,我说的是本机 C++ 代码而不是 .NET,因此 ILMerge 已经出局。

0 投票
7 回答
3904 浏览

c# - tStringList 将 C# 传递给 Delphi DLL

我有一个 Delphi DLL,其函数定义为:

函数 SubmitJobStringList(joblist: tStringList; var jobno: Integer): Integer;

我从 C# 调用它。如何将第一个参数声明为 C# 中不存在的 tStringList。我目前的声明为:

但是当我调用它时,我得到一个内存访问冲突异常。

任何人都知道如何从 C# 正确传递给 tStringList 吗?

0 投票
2 回答
6122 浏览

windows - 使用清单在 LoadLibrary 中搜索 Windows 路径

如果您在LoadLibrary没有路径的情况下调用(例如,LoadLibrary("whatever.dll")Windows 通常会遵循其标准搜索算法,与它用于查找 EXE 的算法相同。

我的问题是:假设应用程序清单指定了系统 DLL 的特定版本,例如 comctl32.dll 6.0。在这种情况下,会LoadLibrary("comctl32.dll")立即转到正确的并排文件夹,还是仍然执行某种搜索?

0 投票
6 回答
15925 浏览

c# - dll 的 App.config

我们有一个“引擎”,可以动态加载 dll(无论位于某个目录中的什么),并通过反射从它们中调用 Workflow 类。

我们现在有一些需要访问数据库的新工作流,所以我想我会在 dll 目录中放置一个配置文件。

但由于某种原因,我的工作流程只是看不到配置文件。

给定上面的配置文件,下面的代码打印一个空字符串:

我想我想要的只是指定一个配置文件名,但我在这里遇到了问题。我只是没有得到结果。有人有任何指示吗?

0 投票
3 回答
3798 浏览

c++ - 使用应用程序的 Windows API commctrl.h 在没有 Platform SDK 的机器上不起作用

我写了一些使用以下内容的东西:

此代码在安装了 Platform SDK 的 2 台机器上运行良好,但在 Windows 的全新安装(当然是 VM)上不能运行(无论是调试版本还是发布版本)。它以非常熟悉的方式死去:

我怎样才能让它在全新安装上运行?它使用的是哪个 dll 却找不到?我的赌注是在 commctrl 上,但有人可以告诉我为什么不是每个窗口都这样吗?

此外,如果有人对如何调试这样的东西有提示,因为我的 CPP 已经生锈了,看起来:)

编辑 - 对我有用的是下载 Visual Studio 2008 的 Redistributable。我认为这不是一个好的解决方案 - 下载 2MB 文件并安装以运行简单的 11K 工具。我想我会更改代码以使用 LoadLibrary 从 comctl32.dll 获取我需要的 2 或 3 个函数。谢谢大家 :)

0 投票
1 回答
2014 浏览

visual-studio - DLL 版本和 Visual Studio 附加到进程

我正在尝试使用 VS 的附加到进程工具来调试我正在为 Sql Server Reporting Services 开发的加载项。

当我将项目 debug/bin 目录中的 dll 和 pdb 复制到 ReportServer/bin 目录时,我可以通过附加到进程来正确调试它。但是,如果我使用我的 msbuild 脚本并将这些 dll 和 pdb 复制到 ReportServer/bin 目录,我会得到错误的版本。

1)如何检查 dll 的当前版本/判断 dll 是否与另一个版本不兼容?

2)我如何知道 ReportServer 进程加载了哪些 dll/版本?

谢谢!