уже на двух форумах рисовал этот вопрос, немогу никак подключить, есть вообщем asm ф-я: .686 .model flat ,stdcall option casemap:none include c:\masm32\include\windows.inc include c:\masm32\include\user32.inc includelib c:\masm32\lib\user32.lib include c:\masm32\include\kernel32.inc includelib c:\masm32\lib\kernel32.lib .data MsgBoxCaption db "hello",0 MsgBoxText db "word!",0 .code mess proc invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK ; ret 0 mess endp end с помощью команды masm'у 9 создаю obj файл C:\masm32\bin\ml /nologo /c /coff /Cp /IC:\masm32\include\ example.asm получившийся obj файл с помощью coff2omf преобразую в omf формат coff2omf.exe example.obj example_omf.obj далее добавляю его в проект через меню Project--->Add to Project...--->выбираю файл example_omf.obj в коде пишу следующее: extern "C" void _stdcall mess(); int main() { mess(); return 0; } и получаю: [Linker Error] Unresolved external 'mess' referenced from C:\BUILDER\000\UNIT1.OBJ вопрос: как указать билдеру искать функцию в example_omf.obj а не в UNIT1.OBJ? или как правильно подключить example_omf.obj?
Programister Что внутри example_omf.obj? Цитата из help'а: "Coff2Omf is a command line tool that converts a COFF import library file (InputFile) to a corresponding OMF import library file (OutputFile) ... Coff2Omf converts the publicly exported symbols in the COFF import library to a corresponding set of symbols in the OMF import library. Coff2Omf enables C++Builder users to link to Microsoft and other third-party DLLs that use the COFF format. Coff2Omf does not convert .OBJ files."
да точно непосмотрел я в хелпе щас попробовал корректно создать lib с помощью команд C:\masm32\bin\ml /nologo /c /coff /Cp /IC:\masm32\include\ example.asm C:\masm32\bin\link -lib example.obj coff2omf.exe example.lib example_omf.lib затем также подключал example_omf.lib в итого тоже самое сообщение. >Что внутри example_omf.obj? тоже самое что и в новой example_omf.lib - ничего: несколько закарючек первые 19 байт и 21d в последнем 512 байте все остальное нули видимо coff2omf.exe неправильно работает я пробовал разные параметры типа -lib:ms -lib:ca все вроде одинаково coff - формат билдера не устраивает. что делать?
Просто ради интереса посмотри что получается в hex-редакторе. Я имею ввиду сконвертированный файл. Сразу поймешь почему не линкуется.
Programister попробовал корректно создать lib Так ты создашь _статическую_ библиотеку. Borland'овская же утилита для конвертирования библиотек импорта, то есть тех, которые получаются, когда линкуешь в dll'ку. что делать? Например, рассмотреть вариант использования tasm или inline asm?
спасибо за ссылку теперь obj файлы пополнее получаются и весят поменьше но проект всеравно компилиться нихочет теперь говорит: [Linker Fatal Error] Fatal: Unable to open file 'USER32.OBJ' провел поиск на всем диске нигде нет, что за user понятия не имею!?
Programister Достаточно убрать в командной строке ключ /coff. И никакие конвертеры типа coff2omf не нужны. Между прочим, coff2omf by Walter Oney имеет неприятное свойство портить некоторые релоки в обьектнике.
все разобрался всем спасибо особенно Mental_Mirror за ссылку одного coff2omf было недостаточно нужно было ещё в omf2d преобразовывать получавшийся файл и тогда все нормально работало!
да тоже верно но только если потом его в omf2d ещё преобразовывать. Quantum можно по подробнее какие релоки