新笔记本运行Pythonnet调用.NET程序集遇ComVisible层级错误
Python脚本调用SDK API的COM互操作错误排查
环境配置
- Windows 10 64位
- Python 3.11.6
- pythonnet 3.0.1
- 依赖组件:
Interop.AbSDK.dll
核心问题
一款稳定运行多年的Python脚本在新笔记本上执行失败:加载Interop.AbSDK.dll并初始化Sdk实例后,调用ask_for_string_pulldown方法过程中,执行Sdk.SetStringRefListArg抛出System.InvalidOperationException,错误信息为:
类型层级中存在ComVisible(false)父类,不允许IDispatch查询
已尝试的无效修复
- 修改Visual Studio项目中AssemblyInfo.cs文件的
[assembly: ComVisible(true)]配置,无任何效果。
后续排查细节
Edit1:.NET运行时兼容性测试
- 使用默认.NET Framework运行时执行脚本,仍触发原错误;
- 强制指定加载coreclr运行时,脚本触发内部应用错误,怀疑
System.Runtime.InteropServices.VariantWrapper存在版本适配问题。
Edit2:参数类型匹配问题定位
- 确认
SetStringRefListArg方法的第二个参数类型为Object&,传入List<String>实例时抛出DISP_E_TYPEMISMATCH(类型不匹配)错误。
内容的提问来源于stack exchange,提问作者LVX
相关产品推荐
相关产品推荐

