我正在维护一个在 MFC 中开发的 ActiveX 控件,用作多个商业应用程序的插件。这一切都很完美,直到我想要包含 AES 加密,因为控件需要自动登录到远程位置。没什么大不了的,创建了一个 C# 类库(SimpleAES.dll),它只提供一个有 2 个成员的类,加密和解密。混合托管和非托管代码,我用 C++/CLR 编写了一个包装器库,用于包装我的加密类 (SimpleAESWrapper.dll)。
当使用我的 ocx 测试容器应用程序进行测试时,这一切都像一个魅力,将所有 3 个库存储在与测试容器应用程序相同的目录中(即 test.exe 和 ocx,以及两个 dll)。
不幸的是,当我运行加载 ocx 的第三方应用程序时,ocx 将不会被加载,因为它会在我创建加密类的实例时立即崩溃,因为它找不到 WrapperSimpleAES.dll。第三方应用程序从另一个位置运行。将库位置添加到路径甚至 system32 文件夹都不能解决问题。
我是否遗漏了一些重要的东西,比如库是否必须以某种方式注册,就像 ocx 必须使用 regsvr32.exe 一样?即应用程序知道在哪里可以找到 ocx,因为它已注册到注册表中,对吗?
我一直在拔头发,因为我找不到有用的线索。