问题标签 [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 投票
3 回答
1507 浏览

c++ - 导出数据成员是否正确?(C++)

正如标题所示,从 C++ 类中导入/导出静态数据是否正确或有效?

我发现了我的问题 - 我正在查看的课程的作者试图导出此平台不支持的可写静态数据。

非常感谢您的回复。

0 投票
4 回答
49679 浏览

asp.net - 如何将 ASP.NET 网站编译成单个 DLL 文件?

我终于完成了我的网站。我发表了它,我对结果感到惊讶。虽然 App_Code 编译成一个单独的 DLL 文件,但每个页面后面的代码都编译成自己的 DLL 文件。如何使它成为一个 DLL 文件?

此外,是否可以将所有内容(SubSonic、AJAX 等)编译到同一个 DLL 文件中?

0 投票
8 回答
33301 浏览

c# - 将程序集嵌入另一个程序集

如果您创建一个使用来自其他程序集的东西的类库,是否可以将这些其他程序集作为某种资源嵌入到类库中?

即不是让MyAssembly.dllSomeAssembly1.dllSomeAssembly2.dll坐在文件系统上,其他两个文件被捆绑到MyAssembly.dll中并且可以在其代码中使用。


我也有点困惑为什么 .NET 程序集是.dll文件。这种格式在.NET 之前不存在吗?是否所有 .NET 程序集 DLL,但并非所有 DLL 都是 .NET 程序集?为什么他们使用相同的文件格式和/或文件扩展名?

0 投票
6 回答
3051 浏览

c++ - 添加 Boost 使 Debug 构建依赖于“非 D”MSVC 运行时 DLL

我有一个烦人的问题,我可能能够以某种方式规避它,但另一方面,我宁愿在它之上并了解到底发生了什么,因为看起来这些东西真的会留下来。

故事是这样的:我有一个简单的 OpenGL 应用程序,它运行良好:在编译、链接或运行它时从来没有出现过大问题。现在我决定尝试将一些更密集的计算转移到工作线程中,以便可能使 GUI 响应更快——当然是使用 Boost.Thread。

简而言之,如果我在 .cpp 文件的开头添加以下片段:

,然后我在尝试启动调试版本时开始收到“此应用程序无法启动,因为未找到 MSVCP90.dll”。(发布模式工作正常。)

现在查看使用 Dependency Walker 的可执行文件,他也没有找到这个 DLL(我猜这是预期的),我可以看到我们正在寻找它以便能够调用以下函数:

接下来,我尝试转换每个实例minmax改为使用宏,但可能找不到对它们的所有引用,因为这没有帮助。(我正在使用一些我没有可用源代码的外部库。但即使我能做到这一点——我认为这真的不是正确的方法。)

所以,我的问题——我猜——是:

  1. 即使使用调试版本,为什么我们还要寻找非调试 DLL?
  2. 解决问题的正确方法是什么?或者甚至是一个快速而肮脏的?

我首先在 Visual Studio 2008 的普通安装中安装了这个。然后尝试安装 Feature Pack 和 SP1,但它们也没有帮助。当然也尝试过多次Rebuild。

我正在为 Boost (v1.36.0) 使用预构建的二进制文件。这不是我第一次在这个项目中使用 Boost,但它可能是我第一次使用基于单独源的部件。

禁用增量链接没有帮助。该程序是 OpenGL 的事实似乎也不相关——当我将相同的三行代码添加到一个简单的控制台程序中时,我遇到了类似的问题(但它抱怨 MSVCR90.dll 和_mkdir,当我替换后者boost::create_directory,问题消失了!!)。它实际上只是分别删除或添加使程序运行正常或根本不运行的那三行。

我不能说我理解并排(甚至不知道这是否相关,但这是我现在的假设),老实说,我也不是很感兴趣——只要我能构建、调试和部署我的应用程序...


编辑 1:在尝试构建一个能够重现问题的精简示例时,我发现该问题与Spread Toolkit有关,它的使用是我所有遇到此问题的程序的共同因素。(但是,在开始链接 Boost 内容之前,我从未有过这个。)

我现在想出了一个最小的程序,可以让我重现这个问题。它由两个编译单元A.cpp和B.cpp组成。

A.cpp:

B.cpp:

一些观察:

  1. 如果我注释掉SP_joinA.cpp 行,问题就消失了。
  2. 如果我注释掉 B.cpp 的单行,问题就消失了。
  3. 如果我将 B.cpp 的单行移动或复制到 A.cpp 的开头或结尾,问题就会消失。

(场景2和3,调用时程序崩溃SP_join,但那只是因为邮箱无效......这与手头的问题无关。)

此外,Spread 的核心库已链接,这肯定是我的问题 #1 答案的一部分,因为我的系统中没有该库的调试版本。

目前,我正在尝试提出一些可以在另一个环境中重现该问题的方法。(尽管如果它真的可以在我的场所之外重复,我会感到非常惊讶......)


编辑 2:好的,所以现在我们有一个包,我可以使用它在 WinXP32 + VS2008 + Boost 1.36.0 的几乎普通安装上重现该问题(仍然是来自 BoostPro Computing 的预构建二进制文件)。

罪魁祸首肯定是 Spread 库,我的构建不知何故需要一个用于MSVC 6的相当古老的 STLPort 版本!尽管如此,我仍然觉得这些症状比较有趣。此外,很高兴听到您是否可以真正重现该问题 - 包括上面的场景 1-3。包装很小,应该包含所有必要的部件。

事实证明,这个问题与 Boost.Thread 没有任何关系,因为这个例子现在使用了 Boost Filesystem 库。此外,它现在抱怨 MSVCR90.dll,而不是以前的 P。

0 投票
5 回答
26051 浏览

c# - 引用同一程序集的不同版本

如果 A 引用程序集 B 1.1 和 C,而 C 引用 B 1.2,如何避免程序集冲突?

我很好地假设 C 的引用会被封装掉并且不会导致任何问题,但似乎所有的 dll 都被复制到了 bin 中,这就是问题发生的地方。

我了解解决此问题的两种方法是使用 GAC 或程序集绑定?GAC 对我来说似乎不是最好的方法,因为我不喜欢假设 dll 会在那里,我更喜欢在我的解决方案中从 lib 目录中引用 dll。

由于程序集绑定对我来说似乎不健壮,如果程序集的一个版本具有另一个版本没有的功能怎么办,这不会产生问题吗?


在我的情况下,因为我使用的是第 3 方 dll,它使用的是旧版本的 nHibernate,而不是我自己使用的。

0 投票
1 回答
815 浏览

dll - 从 VBScript 中检索 DLL 元数据?

仅使用 VBScript(从 Windows 脚本主机启动)可以从 kernel32.dll 中提取 DLL 元数据吗?具体来说,我正在寻找 DLL 标头中指定的版本信息和体系结构。这可以在没有任何依赖关系的情况下完成吗?

0 投票
3 回答
47087 浏览

vb.net - 两台不同计算机上的不同互操作引用不起作用

当我在我的计算机上添加对Microsoft.Office.Interop.Excel的引用时,Visual Studio 会将其添加到项目文件中:

团队中的另一位开发人员遇到错误,需要将一个名为 Interop.Excel.dll 的 DLL 文件添加到项目中,该文件将上面的代码替换为项目文件中的以下代码:

这确实适用于我的电脑。

您能否解释一下这两种方法之间的区别,哪种方法最好,以及如何让第一种方法在其他计算机上工作?

0 投票
3 回答
8631 浏览

.net - 在不停止服务的情况下更新 dll

我想在不停止服务的情况下更新服务器进程的 dll。我怎么做?有点像 asp.net 如何自动拾取放在 bin 文件夹中的新 dll。

0 投票
14 回答
157312 浏览

.net - 如何确定 .NET 应用程序的依赖关系?

如何确定 .NET 应用程序的依赖关系?Dependency Walker是否适用于托管应用程序?我已经下载了最新版本并尝试分析该应用程序,但它只是退出而没有太多解释。如果它不适用于 .NET,那么是否有其他工具可以帮助我调试运行时 DLL 加载问题?

0 投票
8 回答
3437 浏览

c++ - 使用外部(非项目)dll 的本机 VC++ 参考如何指定 dll 的路径

我有一个使用 dll 的本机 VC++ 项目(不在项目中)。现在,我必须将 dll 放在“Windows 用来定位 DLL 的搜索路径” 链接中

但我不希望 dll 位于可执行文件或当前目录或 windows 或系统目录中。

因此,据此我唯一的选择是将路径添加到 %PATH% 环境变量。

还有其他方法吗?

有没有一种优雅的方法(添加到PATH)?我应该在安装时这样做吗?如果我这样做,我应该担心吗?