2011-03-08 64 views
4

我正在尝试编写由c#.net中另一个VB6引用的VB6 dll的替代品。防止COM名称处理

现在我们只能在后期工作,而且我正在取得一些成功。除了我遇到问题。

我枚举正在忙玲导致它被调用,而不是指望“BACSAU”

遗留代码(显然)不再编译“A1BACSTrans_BACSAU”。

这可以预防吗?如果是这样,怎么样?我听说修改IDL,但我可以看到没有任何参考在他们的名字只有unmangled ...

谢谢你提前!

+0

你在看哪个IDL? – 2011-03-09 10:30:26

+0

.class public auto ansi sealed TestA1Replacement.BCStrategy extends [mscorlib] System.Enum { .custom instance void [mscorlib] System.Runtime.InteropServices.ComVisibleAttribute ::。ctor(bool)=(01 00 01 00 00) .field public specialname rtspecialname int32 value__ .field public static literal valueetype TestA1Replacement.BCStrategy BCStratAV = int32(0x00000000) ........ more ....... } //结束课TestA1Replacement。 BCStrategy 我可以在上面看到没有名称混入的证据。 – 2011-03-09 11:15:26

+0

@Mattias还行。 我认为这是'我'不'idl',因此没有带我所期待的。 我已经从使用OLE/COM对象查看器中听到了这一点。 枚举{ BCStrategy_BCStratAV = 0, BCStrategy_BCStratFull = 1, BCStrategy_BCStratInfo = 2, BCStrategy_BCStratNone = 3 } BCStrategy; 但是当我保存,并尝试使用MIDL创建TBL我得到的错误 负荷:错误MIDL2088:[UUID]格式不正确 是真的没有办法在代码级别的说不要裂伤这些名字?! – 2011-03-09 12:40:34

回答