【发布时间】:2011-05-30 13:01:07
【问题描述】:
在 windows 32 或 64 位下使用 VS2010。 我们的 C# 应用程序调用与非托管 DLL 接口的第 3 方 DLL(托管)。 第 3 方 DLL API 在 32 位或 64 位中看起来是相同的,尽管它下面链接到一个 32 位或 64 位非托管 DLL。
我们希望我们的 C# 应用程序在 32 位或 64 位操作系统上运行,理想情况下,它将自动检测操作系统并加载适当的第 32 方 DLL - 通过一个简单的工厂类来测试环境。所以最简洁的解决方案是一个运行时文件夹,其中包含: OurApp.exe 3rdParty32.DLL 3rdPartyUnmanaged32.DLL 3rdParty64.DLL 3rdPartyUnmanaged64.DLL
但是,托管 3rdParty 32 和 64 dll 的接口是相同的,因此不能在同一个 VS2010 项目中引用两者:添加第二个时,会显示警告三角形,但不会被引用。
创建两个额外的库 DLL 项目来引用 3rdParty 32 和 64 Dll 是我唯一的答案吗?所以我最终会得到这个项目安排: 项目1:构建OurApp.exe,为project2或project3动态创建对象。 项目 2:构建引用 3rdParty32.dll 的 OurApp32.DLL 项目 3:构建引用 3rdParty64.dll 的 OurApp64.DLL
【问题讨论】: