![]() |
1
4
是的,您必须创建一个共享的DLL,或者在B和C中将其定义为extern,并静态链接这三个DLL。 |
![]() |
2
2
不-它们不是共享的。 从李希特的“Windows通过C/C++”(P583:)
因此,如果需要在多个可执行文件之间共享资源,则需要创建某种类型的共享内核对象。我建议您创建一个命名文件映射,然后您可以使用该映射从单独的进程中读取和写入(当然,使用适当的互斥排除) |
|
3
0
我实际遇到了这个问题: 我有C.DLL也与B.LIB链接。 如您所见,这两个程序是用B.LIB链接的 加载后,A.EXE和C.DLL分别为代码和数据分隔了B.LIB
与A.EXE和C.DLL共享存储在B.LIB中的全局/静态数据的解决方案是使用共享类/接口。A.EXE将接口发送到C.DLL,并使用指向A.EXE中存储的B.LIB的数据/接口指针。
在所有情况下,由于A.EXE和C.DLL中的B.LIB的代码重复,存储在C.DLL中的B.LIB会继续膨胀全局程序 为了减少全局膨胀,您必须将A.LIB划分为更多的D.DLL、E.DLL,这些D.DLL由A.EXE加载并通过接口传输到C.DLL 要将臃肿的代码减少到零,必须使用完全独立的接口方法。 |
![]() |
glor · 如何在报价单中的r中使用全局变量 7 年前 |
![]() |
Mabadai · 将一个int数组复制到另一个C++ 7 年前 |
![]() |
infinite · 即使没有声明也在使用全局定义 7 年前 |
![]() |
Rakesh · 全局变量值不反映在函数之间 7 年前 |
![]() |
oneMoreDeveloper · Javascript全局数组声明 7 年前 |
![]() |
Klayd Pro · 在c中使用本地指针调用并返回函数 7 年前 |
![]() |
Rob Matthews · 为模拟信用卡应用程序颁发简单的唯一ID 7 年前 |