Hi I created C# Exe Com Server and refer it from VB6 application. The problem is that all the enums are exposed with "strange name" in the vb app: EnumName_EnumeItem, while reffered from then VB6 code as EnumName.EnumItem.
The VB6 application code cannot be modified. Wondering around I saw I can change this definitions by changing the idl extract fro the tlb, but failed to understand exactly how it's done, and what are the tools for the job.
Any sugg开发者_高级运维estions how to set the enums easily as possible?
The code:
public enum enResultCode : uint
{
enRCNone = 0x00000000,
enRCNotFound = 0x00000001,
enRCFoundOnServer = 0x00000002,
enRCFoundOnLocal = 0x00000003,
enRCDatabaseError = 0x00000004,
enRCAborted = 0xFFFFFFFF,
enRCServerError = 0xFFFFFFFE,
enRCLocalError = 0xFFFFFFFD
}
Shown in VB6 as:
instead of:
enResultCode.EnumItemName
I think you're correct the only way to do this is to modify the IDL yourself. I can tell you a little about how it's done...
- You run tlbexp.exe to create the tlb from your C# assembly.
- You run oleview.exe to open that tlb and inspect the IDL. You can save that IDL out to a file or copy/paste it.
- You edit the IDL to give it the enum item names you want.
- You run midl.exe to generate a tlb from your modified IDL.
That should be enough. Sorry I can't give you all the correct command line switches but I'm not on a Windows machine right now.
精彩评论