![]() |
1
9
为了达到你需要的目标 static linking . 这要求所有库(以及它们递归依赖的库)都必须作为静态库可用。请注意,可执行文件的大小将很大,因为它将携带这些静态库中的所有代码。这就是为什么共享库(DLL)首先被发明出来,能够在应用程序之间共享公共代码。然而,这并不总是奏效 so well on windows . 我想你真正想要的是 installer 安装可执行文件及其所有依赖库。 |
![]() |
2
4
2002年DDJ上有一篇文章可能有你想要的: 基本上,它使用msvc的“延迟加载”功能链接到dll,并将dll打包为exe中的嵌入资源。当第一次调用其中一个导出时,将在运行时自动提取DLL。 我还没有使用过这种技术,所以我不能真正评价它的工作效果,但它看起来确实是一个巧妙的想法。 |
![]() |
4
3
我遇见 dll2lib 实用一次。有趣的作品,虽然很昂贵。它允许您将几乎所有的动态链接库转换为静态库,然后将静态库与您的应用程序链接以生成稳定的exe。iirc,自由版本将在从此类生成的库中输入函数时显示某些通知(消息框)。 |
![]() |
6
2
如果您真的需要这样做,您可以使用这个很棒的库,它将允许您从内存中加载一个DLL。我用它从一个资源中读取一个DLL并为我加载它。 |
![]() |
7
0
一般来说,不需要。DLL有一些非常特殊的行为,比如在加载时获取加载器锁,并在这些点调用dllmain。虽然理论链接器可以安排从应用程序main()调用每个dllmain,但在加载的锁下不会发生这种情况。这个加载器锁由操作系统控制。此外,通过dllmain通知dll新线程,这也几乎不可能伪造。 |
|
Guilherme Albertini · DLL中的类 6 年前 |
![]() |
Naomi · C#dll资源文件更改语言 6 年前 |
![]() |
AidanH · C#DLL语言翻译实现[关闭] 6 年前 |
![]() |
subham · DLL函数调用不工作 6 年前 |
![]() |
PixelThis · 为什么我的DLL要求我的程序有一个特定的名称? 7 年前 |
![]() |
nemo · DLL的“好”调用约定是什么? 7 年前 |