Using VS.NET, I created a MFC Application project. The *only* change I
made was to switch on the /CLR command line option (which then forces
you to turn a few others off). This produces a single module .EXE
managed assembly containing with managed code and unmanaged data.
PEVerify /MD states that the metadata is valid. The application even
runs successfully. However, upon inspection, there appears to be an
invalid TypeRef. ILDASM /ADV shows the following:
TypeRef #17 (01000011)
-------------------------------------------------------
Token: 0x01000011
ResolutionScope: 0x00000000
TypeRefName: COccManager
Note the nil resolution scope. However, there is no EXPORTEDTYPE table
in this single-module assembly. The type CoccManager is also never
defined in the assembly. In fact, this type seems to only be referenced
once in the entire application. Here is the ILDASM for the reference. It
is a global function method parameter:
Method #154
-------------------------------------------------------
MethodName: AfxEnableControlContainer (0600009A)
Flags : [Public] [Static] [ReuseSlot] [PinvokeImpl]
[HasSecurity] (00006016)
RVA : 0x000075ee
ImplFlags : [Native] [Unmanaged] [PreserveSig]
(00000085)
CallCnvntn: [DEFAULT]
ReturnType: CMOD_OPT
System.Runtime.CompilerServices.CallConvCdecl Void
1 Arguments
Argument #1: Ptr ValueClass COccManager
CustomAttribute #1 (0c00007e)
-------------------------------------------------------
CustomAttribute Type: 0a00000b
CustomAttributeName:
System.Security.SuppressUnmanagedCodeSecurityAttribute :: instance void
.ctor()
Length: 4
Value : 01 00 00 00
> <
ctor args: ()
How the heck I am suppose to resolve this TypeRef? Thanks in advance for
any clues?
-- Brent Rector, .NET Wise Owl
Demeanor for .NET - an obfuscation utility
http://www.wiseowl.com/Products/Products.aspx
You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.