gpt4 book ai didi

c# - 为 32 位和 64 位非托管 DLL 创建托管包装器

转载 作者:太空狗 更新时间:2023-10-29 21:25:40 29 4
gpt4 key购买 nike

我们正在围绕非托管 DLL 创建 C# 包装器。非托管 DLL 有 32 位和 64 位版本。我们将托管包装器保留在它自己的项目中,以便我们可以将它构建为一个单独的组件并在解决方案中重用它。

然而,这会导致一些问题。由于 32 位和 64 位版本的非托管 DLL 具有相同的名称,因此我们无法将正确的非托管 DLL 移动到输出 (bin) 目录。如果构建配置是 x86,我们想复制 32 位版本,x64 是 64 位。只需一个处理器架构,这很容易实现。我们只是在我们的项目中包含非托管 DLL,并在文件中将本地复制设置为 true。但由于我们需要同时针对这两个目标,因此更加棘手。

我们找到了这个链接 Targeting both 32bit and 64bit with Visual Studio in same solution/project但这似乎引用了机器上已经存在的一些 DLL。我们希望将正确版本的 DLL 复制到输出目录 (bin)。

我们非常欢迎任何有关如何解决此问题的提示或技巧。

最佳答案

我刚刚遇到了与 FreeImage 库的 .Net 包装器相同的问题。我所做的是为引用托管包装器的项目创建两个构建配置,一个用于 x86,一个用于 x64。我在项目文件的 AfterBuild 目标中添加了 msbuild 条件复制部分,如下所示:

  <Target Name="AfterBuild">
<Copy Condition="'$(Platform)' == 'X86'" SourceFiles="$(MSBuildProjectDirectory)\Resources\x86\FreeImage.dll" DestinationFolder="$(TargetDir)" />
<Copy Condition="'$(Platform)' == 'X64'" SourceFiles="$(MSBuildProjectDirectory)\Resources\x64\FreeImage.dll" DestinationFolder="$(TargetDir)" />
</Target>

关于c# - 为 32 位和 64 位非托管 DLL 创建托管包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2064718/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com