C++ static library к masm

Тема в разделе "WASM.ASSEMBLER", создана пользователем СFF, 10 янв 2011.

  1. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    Привет всем.
    Создал static library на масме и прикрутил ее к с++. Все удачно.
    Создал статик на с++ а к масму прикрутить не могу. Пишет
    Код (Text):
    1. LINK : fatal error LNK1196: invalid or corrupt import object: unknown version
    Что делать ?

    С++
    Код (Text):
    1. #include <windows.h>
    2.  
    3. extern "C"
    4. {
    5.     void MsgWait()
    6.     {
    7.         MessageBox(0,L"less",0,0);
    8.     }
    9. };
    10.  
    11. int WINAPI WinMain(HINSTANCE hIsntance,HINSTANCE hPrevInstance,LPSTR pCmd,int Show)
    12. {
    13.  
    14.     return 0;
    15. }
    Масм
    Код (Text):
    1. .586
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. include \masm32\include\windows.inc
    6. include \masm32\include\kernel32.inc
    7. include \masm32\include\user32.inc
    8. include \masm32\include\shell32.inc
    9. include \masm32\include\ntdll.inc
    10. include \masm32\include\urlmon.inc
    11.  
    12. includelib \masm32\lib\kernel32.lib
    13. includelib \masm32\lib\user32.lib
    14. includelib \masm32\lib\ntdll.lib
    15. includelib \masm32\lib\shell32.lib
    16. includelib \masm32\lib\urlmon.lib
    17. includelib CppStub.lib
    18.  
    19. include \masm32\macros\macros.asm
    20.  
    21. .code
    22.  
    23. extern MsgWait:DWORD
    24.  
    25. Begin:
    26.     call MsgWait
    27. end Begin
     
  2. ntkernelspawn

    ntkernelspawn New Member

    Публикаций:
    0
    Регистрация:
    17 дек 2010
    Сообщения:
    61
    void MsgWait()
    void __stdcall MsgWait()
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    С++ либы импорта линкованы более новой версией линкера, чем масм.
    Юзай с++ линкер и в масме тоже, он более новый.
     
  4. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    Вообщем народ мне удалось

    Прикрепляю файлы, чтобы было ясно другим. Работает с Visual Studio 2010.
    Чет немогу прикрепить, ну ладно


    Код (Text):
    1. \masm32\bin\ml /c /coff %1.asm
    2. "linker\link.exe" "CppStub.lib" "linker\uuid.lib" "linker\libcmt.lib" /LTCG /SUBSYSTEM:WINDOWS /OPT:NOREF %1.obj
    3.  
    4. pause
    main.asm
    Код (Text):
    1. .586
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. include \masm32\include\windows.inc
    6. include \masm32\include\kernel32.inc
    7. include \masm32\include\user32.inc
    8. include \masm32\include\shell32.inc
    9. include \masm32\include\ntdll.inc
    10. include \masm32\include\urlmon.inc
    11.  
    12. includelib \masm32\lib\kernel32.lib
    13. includelib \masm32\lib\user32.lib
    14. includelib \masm32\lib\ntdll.lib
    15. includelib \masm32\lib\shell32.lib
    16. includelib \masm32\lib\urlmon.lib
    17. includelib CppStub.lib
    18.  
    19. include \masm32\macros\macros.asm
    20.  
    21. .code
    22.  
    23. extern WaitMsg@0:DWORD
    24. WaitMsg PROTO
    25.  
    26. Begin:
    27.  
    28.     invoke WaitMsg
    29.    
    30.     invoke ExitProcess,0
    31.    
    32. end Begin
    Papka linker eto
    Код (Text):
    1. c2.dll
    2. link.exe - ot visual studii 2010
    3. libcmt.lib
    4. msobj100.dll
    5. mspdb100.dll
    6. uuid.lib