| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > C + asm |
| Автор: Fedor 8.2.2006, 23:01 | ||
В общем, есть какой-то минимальный asm-модуль. Пусть он просто выводит на экран строку. Например:
Макрос prints определен в macros.asm и просто выводит строку на экран. Но это не суть важно. Тасмом делаем из этого файла obj. Как мне теперь использовать процедуру pppp в СPP, как подключить этот obj-файл? Я пытался как библиотеку в опциях линковщика прицепить, но ругается. Я как бы даже не прошу мне решение подсказать, ибо интересно самому нарыть, но просто подскажите, в какую сторону рыть, ибо я не смог составить поисковый запрос на msdn, чтоб нашло то, что мне нужно. Использую msvc2003. |
| Автор: cardinal 8.2.2006, 23:17 |
| http://vingrad.ru/VB-VB-002158 Думаю, что нужно идти в похожем направлении... |
| Автор: Ignat 9.2.2006, 11:19 |
| Fedor, чем ты компилировал asm? obj файлы имеют разный формат у различных компиляторов... Если не ошибаюсь, то у мелкософта это COFF. Выходом будет компиляция тем же C-шным компилерром в asm-вставке. __asm{ ... } |
| Автор: Fedor 9.2.2006, 15:55 |
| Ignat Асм-вставка не подходит. Нужно именно в отдельном файле. З.Ы. Я кое-что нарыл на сырцах, буду разбиратся. Если вопросы появятся, буду задавать. Пока что спасибо за помощь |
| Автор: Ignat 9.2.2006, 16:00 |
| сорри, не заметил, что тасм. Fedor, кстати, возможно тасмовский obj имеет формат OMF, применяемый борландом, тогда можно попробовать компилировать борландовским bcc. |
| Автор: Fedor 9.2.2006, 16:17 |
| хм. А если я хочу использовать Visual C++, то я не могу tasm-ом объектники создавать? Выход - masm? |
| Автор: Ignat 9.2.2006, 16:27 |
| Теоретически да, но майкрософтовцы не сразу перешли к COFF формату. А в асмовских компиллерах я не силен. Как вариант, можно написать весь проект в VC++, создать студией Makefile, а затем переправить его под борландовский компиллятор, он вполне корректно жует MFC со всеми её макросами. Но предварительно стоит убедиться, что bcc корректно прилинкует тасмовый obj. |
| Автор: Fedor 9.2.2006, 17:11 | ||
Ага. МСДН:
Значит, можно использовать тасмовские объектники. |
| Автор: Ignat 9.2.2006, 17:17 | ||
| Не факт
Переведешь? |
| Автор: Ignat 9.2.2006, 17:48 |
| Результат расскажи, интересно-таки |
| Автор: Fedor 9.2.2006, 19:30 |
| В общем, закачал MASM. Делаю объектный файл. Вроде, все ок. Файл формата coff. Далее в вижуал студии в опциях проекта в опциях линковщика ставлю Additional Dependencies файл asm.obj. Объявляю функцию как extern "C", вызываю ее в программе Билдю, и вот тут линковщик ругается. Говорит, что такой экстерн-функции нигде нету. |
| Автор: Ignat 9.2.2006, 19:36 |
| Fedor, можешь скинуть мне этот obj на мыло? |
| Автор: Fedor 9.2.2006, 19:39 |
| Не могу Леплю сюда. |
| Автор: Ignat 9.2.2006, 19:51 |
| Fedor, я вообще не нашел заголовка экспортируемой функции в файле. |
| Автор: Fedor 9.2.2006, 20:40 |
| В общем, в итоге виноватым оказался асм. Насколько я вижу, между тасмом и масмом есть некоторые отличия, а в масме я пока не работал, то буду с ним разбираться. Теперь насущные вопросы перестали относится к С. Так что помечаем вопрос как решенный, а в случае неприятностей пойду в соотв раздел Добавлено @ 20:41 Огромное спасибо Ignat за помощь. |