我正在编写一个C#WPF图形界面,客户端需要使用它来使用许多封闭源代码的依赖项。其中一些依赖项没有64位版本。但是,有一部分代码要求将其编译为64位,以允许其访问更多内存。为了解决这个问题,我将大多数应用程序都编译为32位,对于需要64位的部分,我将其拆分为单独的dll,并使用了COM桥。我按照以下指南创建了桥:
https://www.codeproject.com/Tips/1199539/Using-bit-DLLs-in-bit-Processes-Using-Out-of-proce
这一切都很好,我可以通过com桥从32位dll调用64位dll中的方法。但是,我遇到了一个问题。通过regasm注册的64位dll无法访问硬件资源。
COM注册的DLL引用了一组与X射线检测器接口的程序集。这些程序集使.NET程序能够扫描并连接到与PC相连的X射线检测器设备。问题的症结在于:
通过COM桥调用此64位dll中的方法时,该dll无法找到或连接到与PC相连的X射线硬件。但是,如果我创建一个直接引用该程序集的测试程序,问题就会消失。
因此,我的问题是:我是否需要授予COM注册的DLL许可才能访问硬件资源?