背景:一个第三方组件是C++.NET 32位开发的,后被C#(基于FrameWork4.0)调用并封装成组件,此二次封装的组件无法运行于64位操作系统上。
开发环境:VS2012;
解决办法:
1、于64位操作系统上分别安装vcredist_VS2010_x64和vcredist_VS2010_x86;
2、选择宿主Exe 的目标框架为FrameWork 4.5,如果有条件组件也可以用Framework4.5,实际证明4.0也可,请看后续说明;
3、把宿主Exe和组件程序分别设置目标平台为Any CPU模式,将宿主程序目标平台下面的 “首选32位”选中,注意如果是Framework4.0这个选项不可用;
4、编译宿主和组件,所有应用正常。
后续:
1、把宿主程序重新改回Framework并进第编译,此时也可以正常运行;
2、根据过程分析4.0和4.5编译器中在AnyCPU模式下,有个“首选32位”的参数,估计是VS2012的BUG,这个参数只有在4.5模式下才能可视化操作,而此参数保存下来了,后续再利用4.0编译也起到了作用。
PS:这个选项只在VS2012中有,其它版本开发工具中没发现。
参考:http://msdn.microsoft.com/zh-cn/library/vstudio/zekwfyz4.aspx
解决.NET 32位程序运行在64位操作系统下的兼容性问题
最新推荐文章于 2024-03-13 13:51:09 发布
本文介绍了如何通过安装特定的Visual C++ Redistributable组件、选择正确的目标框架、设置目标平台模式等步骤,在64位操作系统上运行由C++开发的第三方组件。特别指出在VS2012中存在一个与目标平台模式可视化的bug,该bug影响了组件在使用不同框架时的兼容性。
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

554

被折叠的 条评论
为什么被折叠?



