Questions tagged «dll»

6
使用.dll文件比将.cs文件链接到项目的优势(对于我自己的通用帮助程序类/扩展方法)
我有一个帮助程序项目,可在我创建的所有应用程序中使用。它包含一些扩展方法和一堆通用帮助程序类,控件等。我会不时更新/扩展帮助程序项目。这些通常是小型且无关的项目,而我是唯一从事这些项目的人。 我尝试了两种使用方法 将.cs文件直接添加(添加为链接)到使用它们的每个项目中 将其编译为.dll并将其添加为参考 我看到了这些方法的一些优点和缺点。 第一个: 更简单,因为帮助程序类被编译到exe文件中,所以我经常可以很容易地提供一个可以正常工作的.exe文件。因为我添加为链接,所以我可以肯定的是,每当构建使用该帮助程序的任何项目时,该帮助程序文件都是最新版本。 甚至更简单,因为我可以分开文件,因此可以在.NET 4.0上良好运行的扩展方法与需要.NET 4.5的扩展方法分开引用,这意味着整个应用程序都可以在.NET 4.0上运行 允许通过代码进行调试,并具有断点等的所有优点。 似乎不是“最佳实践” 第二个: 似乎是正确的方法,但是: 需要我提供一个单独的.dll文件,由于某种原因,该文件对用户来说要困难得多(他们倾向于在没有.dll的情况下共享我的程序,然后该文件在启动时崩溃) 当它被编译成一个.dll时,它将需要.NET的最高版本-我的许多用户都没有.NET 4.5,并且只有我的helper类的某些元素需要这样做,这意味着我可以强迫某些人无故更新他们的系统 我还需要确保每当我更新任何程序时,我都还提供.dll文件-即使我不知道自上一个版本以来是否已对其进行过更改(可能已经更改了,但是它最好是同一版本)。在不跟踪程序集版本的情况下,我看不到一种简单的确定方法,这是额外的工作。现在,当我更新程序时,我只提供更新的exe,并且我希望使其保持小巧和低调。 那么,在这里使用.dll文件的实际好处是什么?请注意,我是唯一编辑所有应用程序和帮助文件的代码的人。 另外,需要澄清的是-应用程序通常很少,而helper类中包含的代码对所有应用程序都是完全通用的(一些简单的字符串比较,路径或XML操作等) 实际上,有人让我意识到刚才还有第三种选择。由于我在separte项目中具有帮助程序代码,因此可以将该项目添加到我每个单独应用程序的解决方案中-该工作方式类似于针对单个文件的“添加为链接”,但我只添加了一个项目...但是正如Doc Brown所注意到的,这实质上意味着无论如何都需要将.dll添加到项目中... 另一种有利于不使用dll文件的事情是能够主动地通过helper类进行调试...
38 c#  dll 

10
C ++:二进制级别缺乏标准化
为什么ISO / ANSI没有在二进制级别上标准化C ++?C ++存在许多可移植性问题,这仅是由于缺乏二进制级别的标准化。 Don Box写道(引自他的《基本COM》一书,“ COM作为更好的C ++”一章) C ++和可移植性 一旦决定将C ++类作为DLL分发,就会面临C ++的基本弱点之一,即二进制级别的标准化不足。尽管ISO / ANSI C ++草案工作论文试图对将编译的程序以及运行它们的语义产生的影响进行编码,但它并未尝试标准化C ++的二进制运行时模型。第一次,当客户端尝试从C ++开发环境(而不是用于构建FastString DLL的环境)中链接FastString DLL的导入库时,此问题将首次显现。 还有更多的好处,或者由于缺少二进制标准化而损失了吗?
14 c++  dll  ansi  iso 

2
C ++库API设计
我正在寻找一个很好的资源来学习C ++库的良好API设计,查看共享的对象/ dll等。在源代码级别上有很多资源可以编写漂亮的API,漂亮的类,模板等,但是几乎没有将它们放到共享的库和可执行文件中。约翰·拉科斯(John Lakos)的《大规模C ++软件设计》一书很有趣,但已经过时了。 我正在寻找的是关于处理模板的建议。在API中使用模板后,我通常会在可执行文件(或其他库)中获得库代码,因此,如果在那里修复错误,我将无法简单地推出新库,而必须重新编译和重新分发该代码的所有客户端。(是的,我知道一些解决方案,例如尝试实例化至少库中最常见的版本等)。 我还在寻找其他注意事项和在C ++库上保持二进制兼容性时需要注意的事项。 是否有一个很好的网站或关于此类事情的书?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.