Проблемы с def файлом

Discussion in 'LANGS.C' started by nobodyzzz, Nov 14, 2008.

  1. nobodyzzz

    nobodyzzz New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2005
    Messages:
    475
    имеется def файл вида
    Code (Text):
    1. LIBRARY "VssApiWrapper"
    2. EXPORTS
    3.     ??0CVssJetWriter@@QAE@XZ = ordinal7 @7
    4.     ??0CVssWriter@@QAE@XZ = ordinal8 @8
    5.     ??1CVssJetWriter@@UAE@XZ = ordinal9 @9
    6.     ??1CVssWriter@@UAE@XZ = ordinal10 @10
    7.     ?AreComponentsSelected@CVssWriter@@IBG_NXZ = ordinal11 @11
    8.     ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z = ordinal12 @12
    9.     ?CreateVssExamineWriterMetadata@@YGJPAGPAPAVIVssExamineWriterMetadata@@@Z = ordinal13 @13
    10.     ?CreateVssSnapshotSetDescription@@YGJU_GUID@@JPAPAVIVssSnapshotSetDescription@@@Z = ordinal14 @14
    11. ...
    но после компиляции в dll в экспорте имена почемуто имеют вид
    Code (Text):
    1. ??0CVssJetWriter
    2. ??0CVssWriter
    3. ??1CVssJetWriter
    4. ??1CVssWriter
    т.е. символы начиная с @@ обрубаются, как с этим боротся?
     
  2. censored

    censored New Member

    Blog Posts:
    0
    Joined:
    Jul 5, 2005
    Messages:
    1,615
    Location:
    деревня "Анонимные Прокси"
    А если имя обернуть в ""?

    http://msdn.microsoft.com/en-us/library/h41zhe21(VS.80).aspx
     
  3. nobodyzzz

    nobodyzzz New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2005
    Messages:
    475
    Там говорится про имена файлов, а не про имена функций. В любом случае это не помогает =(
     
  4. Arthur

    Arthur New Member

    Blog Posts:
    0
    Joined:
    Jan 27, 2007
    Messages:
    494
    nobodyzzz
    А вам обязательно нужен .def файл?
    Может просто использовать модификатор __declspec(dllexport) и компоновать без DEF файла?
     
  5. nobodyzzz

    nobodyzzz New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2005
    Messages:
    475
    Arthur
    не вариант с __declspec(dllexport) не совсем подходит для моей задачи
    временно решил заменой @ в def файле на ^ + небольшой скрипт, который заменяет ^ в экспортах на @ в Post-build events =)))