我编写了一个从第三方应用程序(使用VBA进行脚本编写)加载的COM DLL。
启动时,应用程序将一个值传递给DLL,以便之后找到它的实例。
此(非托管)值是我创建static
和全局(它在任何类之外)的应用程序的特定类型。
DLL在注册表中正确注册(regasm
),第三方应用程序正确加载DLL。
将DLL放在系统目录(即System32或SysWoW64)上。
在Windows XP中,DLL的工作方式类似于魅力,但在Windows 7(64位)中,存在一个问题:静态值变为空!但是,DLL的其余部分运行良好,只是这个值有问题。
另一方面,当我们将DLL放在非系统的文件夹中时,它没问题。
我认为GC破坏了价值,但这是不可能的,因为存在静态和非管理。
GC的问题是什么?为什么系统文件夹不起作用(即使有管理员权限)?是否有Windows7专业?
答案 0 :(得分:0)
现在问题很明显:错误是第三方应用程序,而不是我的代码。当我们将DLL放入System的文件夹时,发生了一些奇怪的事情。