Ignore:
Timestamp:
Nov 15, 2007, 3:18:41 AM (17 years ago)
Author:
dai_9181
Message:

COM修飾子に対応。COMインターフェイスを呼び出せるようにした

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/src/Linker.cpp

    r361 r370  
    165165    BOOST_FOREACH( const Schedule &schedule, nativeCode.GetSchedules() )
    166166    {
     167        if( schedule.GetType() == Schedule::ComVtbl )
     168        {
     169            LONG_PTR vtblOffset = schedule.GetClass().GetComVtblOffset();
     170
     171            nativeCode.Overwrite(
     172                schedule.GetOffset(),
     173                static_cast<long>( vtblOffset + imageBase + dataSectionBaseOffset )
     174            );
     175        }
     176
    167177        if( schedule.GetType() == Schedule::Vtbl )
    168178        {
     
    178188    BOOST_FOREACH( const Schedule &schedule, dataTable.schedules )
    179189    {
     190        if( schedule.GetType() == Schedule::ComVtbl )
     191        {
     192            LONG_PTR vtblOffset = schedule.GetClass().GetComVtblOffset();
     193
     194#ifdef _WIN64
     195            dataTable.OverwriteInt64(
     196                schedule.GetOffset(),
     197                vtblOffset + imageBase + dataSectionBaseOffset
     198            );
     199#else
     200            dataTable.Overwrite(
     201                schedule.GetOffset(),
     202                vtblOffset + imageBase + dataSectionBaseOffset
     203            );
     204#endif
     205        }
     206
    180207        if( schedule.GetType() == Schedule::Vtbl )
    181208        {
Note: See TracChangeset for help on using the changeset viewer.