【发布时间】:2017-03-22 22:44:14
【问题描述】:
我需要在我们的 .NET 项目中使用 BITS COM https://msdn.microsoft.com/en-us/library/windows/desktop/aa362708(v=vs.85).aspx。我不能使用包装 BITS 接口的 3rd 方库,但坦率地说,无论如何也没有什么大的选择。所以,显然我坚持生成 RCW (https://msdn.microsoft.com/en-us/library/5dxz80y2(v=vs.110).aspx),最传统的方法是 tlbimp.exe,它完成了它的工作,但有警告。结果我有一个结构标记为 ComConversionLoss
[ComConversionLoss]
[StructLayout(LayoutKind.Explicit, Size = 8, Pack = 4)]
public struct BG_AUTH_CREDENTIALS_UNION {
}
这很可能是因为它是 C++ 中的联合,而 tlbimp.exe 不知道如何正确生成它。对于这种情况,唯一的建议是使用 ildasm.exe 反编译生成的 DLL 并重新编译。我认为从技术上讲我可以做到,但如果有更好的方法我可能不知道,我宁愿不这样做。 我还发现 tlbimp2.exe 对我的情况没有帮助,因此我正在寻找 tlbimp.exe 的更好替代方案,它能够处理这种情况并理想地生成具有 IDisposable 实现的 COM 包装器,以便对COM 对象的生命周期,但这是一个单独的问题。首先,我需要其他工具来正确处理我的案例(C++ 联合类型)。有人知道这样的工具吗?
【问题讨论】:
标签: c# .net com com-interop