我们使用 C# 应用程序中自行编写的 32 位 C++ DLL。现在我们注意到,当 C# 应用程序在 64 位系统上运行时,会自动使用 64 位运行时,当然无法从 64 位运行时访问 32 位 DLL。
我的问题是:有没有办法使用32位DLL?如果不是,如果我创建了 DLL 的 64 位版本,是否可以轻松地让应用程序选择要 P/Invoke 的哪一个?
我正在考虑在 C# 中创建两个辅助类:一个从 32 位 DLL 导入函数,另一个从 64 位 DLL 导入,然后为每个调用 32 位导入器或64 位导入程序取决于操作系统的“位数”。那行得通吗?
或者还有其他简单的方法来做事吗?
您需要确保在 64 位编译时仅对 64 位 DLL 使用 P/Invoke 调用。
一种选择是将所有“方法”移至标准接口(或抽象基类)中,并提供 2 种实现,一种 32 位和一种 64 位。您可以使用工厂方法根据 IntPtr 的大小构造适当的类实例。
这允许“AnyCPU”应用程序在运行时正确确定要 P/调用哪个 DLL,并且可以正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)