Dll 大多数编程语言都有';将库包含到代码中';函数,但函数';将代码包含到库中';?

Dll 大多数编程语言都有';将库包含到代码中';函数,但函数';将代码包含到库中';?,dll,Dll,大多数编程语言都有“将库包含到代码中”函数,但“将代码包含到库中”函数在哪里 我的意思是从源代码中插入其他文件,而不是从消费文件中插入 想法很简单-我们有一个带有类B的库a,我们想用一些C函数扩展B,但我们不想从B扩展,而是扩展B 所以,如果我们有一个类似于库的DLL和函数,我们希望在不使用新DLL的情况下向该DLL添加函数,并保持调用新函数的能力,就像调用第一个DLL一样 重点不在于拥有DLL源代码和修改tham,也不在于仅仅为了添加几个新函数而包装该DLL中的所有函数创建新的DLL,而在于向

大多数编程语言都有“将库包含到代码中”函数,但“将代码包含到库中”函数在哪里

我的意思是从源代码中插入其他文件,而不是从消费文件中插入

想法很简单-我们有一个带有类
B
的库
a
,我们想用一些
C
函数扩展
B
,但我们不想从
B
扩展,而是扩展
B

所以,如果我们有一个类似于库的DLL和函数,我们希望在不使用新DLL的情况下向该DLL添加函数,并保持调用新函数的能力,就像调用第一个DLL一样

重点不在于拥有DLL源代码和修改tham,也不在于仅仅为了添加几个新函数而包装该DLL中的所有函数创建新的DLL,而在于向现有DLL中添加功能并重新获得修改后的DLL。没有包装,但插入内部

如果你觉得这个问题是个问题,请投票支持重新开放


如果您有什么要添加的,请添加,这是comunity wiki。

这在很大程度上取决于手边的编程语言

<>在C++中,任何模块(因为没有模块)可以向任何命名空间添加内容。您可以将两个不同的DLL链接到同一命名空间,这两个DLL都在添加成员

C#更进一步,不仅任何人都可以添加到任何名称空间,还可以使用“扩展方法”向现有类添加方法

在Ruby中,只需在别处定义类的一部分即可重新打开类,有效地拥有一个类的多个定义。但是它们都引用同一个类,所以在运行时,它们都会在同一个类中结束

在Lua中,您可以使用“module”函数重新打开模块,并添加任何您想要的内容


所有这些实际上都没有修改原始代码的“源代码”-但它们提供了自然、无缝的扩展,因此它可能是最接近您的了。

您能更详细地解释一下您的问题吗?当旋转木马坏了的时候,那个弯腰驼背、肤色苍白的老人在哪里,你所描述的并不是一个特别简单的想法。或者是一个非常好的,我想。从模块外部修改模块的契约会带来有害的问题和潜在的灾难。添加功能最明智的方法是从中继承一个新类。您似乎混淆了编译器包含和编译库。如果您已经获得了源代码和编译器,就可以在DLL中添加更多功能,而不必与源代码混淆。在没有源代码的情况下向现有DLL添加新函数是一个更大的问题。换句话说,你得到的是一个不连贯的问题,因此不是一个真正的问题。@olejak:这不是编程语言的问题。语言规范一般不涉及DLL的构成;他们只是说代码会做什么。我要编辑标签。话虽如此,你现在有一个合理的问题,所以我投票决定重新开放。