доброго времени суток всем, вопрос исключительно технический: программа состоит из двух модулей. Один написан на Си (Dev C++) второй на асме (hutch's masm). Каким образом их собрать в один файл? (вопрос не в синтаксисе, те не в директивах public, extern и не в соглашении о вызовах) а именно в том как связать файлы... Dev C++ создает объектные файлы как ".o", пробовал в проект положить файл на асме ".obj", компилятор пишет : "...\Makefile.win [Build Error] No rule to make target `first.o', needed by `second.exe'. Stop. " Вообще так можно собирать файлы? Подскажите как разрулить ситуацию?
они могут не совпадать форматом, мангленьем, способами передачи параметров на входе и возврате итд. от суффикса объектника тут мало что зависит. ов линкер понимает и умеет связывать кучу всяких форматов + позволяет переименовывать на ходу, но боюсь вы там не разберетесь. попробуйте для начала скомпелить С модули вс компелиром и связать с масмовыми модулями мсвс линкером. дальнейшее придет с опытом да. масмовый проц использует стдкальную конвенцию
Dev C++ использует gcc, как я помню, так что хз чего ты хочешь добится. Можно юзать, например, MS-компиляторы (студия) и fasm (он умеет MSCOFF т.е. obj делать)
Microedition спасибо, щас скачал fasm разберусь что надо в синтаксисе подправить и попробую твой вариант
Microedition у меня вызов ассемблерной процедуры из кода на СИ. При запуске команды пишет "undefined reference to asm_proc"
=))) спасибо всем , работает, все компилирует и собирает =) В общем-то если интересно как все было : скомпилировал в ".obj" на masm'e c:\masm32\bin\ml /c /coff asm_proc.asm и скомпилировал в ".o" на СИ , кстати Microedition, поправочка - боюсь неверно правильно получается при: gcc -c <compile-options> с_proc.c далее все как и было подсказано Код (Text): gcc -o program.exe c_code.o asm_code.o