| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > не состыковывается Borland C++ и asm |
| Автор: MaKeGoRR 13.1.2014, 10:26 | ||||||
| Как в Borland C++ привязать к проекту файл temp.asm Почему в файле prim.cpp на строке prim(); это вызов функции асма выдает ошибку undefined simbol _prim in module primc.cpp Кто то писал, что надо назвать функцию с (черточкой)_ Но бесполезно, назовешь с _(одной чертой), выдаст ошибку, что не нашел с __(двумя чертами) Кто то писал, как подключен prim.asm? Никак, он и так видит файл асма, потому что создает prim.obj просто функцию объявляешь так:
prim.cpp
prim.asm
|
| Автор: bsa 13.1.2014, 10:28 |
| MaKeGoRR, а как ты привязываешь? |
| Автор: MaKeGoRR 13.1.2014, 10:35 | ||
Читайте, выше я добавил Я не знаю как, в книге почему то ничего не написано про подключение файла асма Наверно нужно как то подключить, но я не знаю как |
| Автор: bsa 13.1.2014, 11:10 |
| MaKeGoRR, во-первых, prim.obj создается из prim.cpp. Во-вторых, для сборки экзешника тебе необходимо создать ПРОЕКТ и добавить в него твои cpp и asm файлы. В-третьих, чтобы проблем не было, дай разные имена файлам. Так как объектные файлы у них будут одинаковыми и перетрут друг друга. В-четвертых, если у тебя только одна функция, то можно написать так: extern "C" void prim (void); В-пятых, если будут проблемы с ненахождением функции prim, попробуй в ассемблерном файле добавлять подчеркивания перед именем функции. |
| Автор: MaKeGoRR 13.1.2014, 11:37 | ||
проект у меня и был создан, у меня .obj с разными именами, подчеркивание в асм файле ничего не меняет почему ищется функция в файле .cpp, а не .asm? |
| Автор: bsa 13.1.2014, 12:15 |
| с какими? prim.cpp и prim.asm превратятся в prim.obj. Или у тебя другие имена? линкер не работает ни с asm, ни с cpp. Он работает с obj. Чтобы получился экзешник необходимо, чтобы во всех объектных файлах были функции, на которые в них есть ссылки. Судя по всему, у тебя объектный файл от ассемблерного исходника не попадает линкеру. Или ты не создал проект, и/или не добавил в него ассемблерный файл (меню Project). На самом деле, сборка программы идет следующим образом: //компиляция 1.cpp -> asm -> 1.obj 2.c -> asm -> 2.obj 3.pas -> asm -> 3.obj 4.asm -> 4.obj ... //линковка 1.obj 2.obj 3.obj 4.obj ... some.lib other.lib ... -> prog.exe |
| Автор: MaKeGoRR 13.1.2014, 12:43 |
| добавил узел к проекту файл асм(через проект не знаю как) пишет undefined simbol _A in module primm.asm Почучается ошибка в коде, буду пробывать искать ВСЕ, заработало, убрал primm.obj, который вручную создавал через тасм, теперь primm.obj создал Borland C++ и все стало норм, кстате почему, если сделать .obj через TASM, то выдает ошибку: undefined simbol _A in module primm.asm |
| Автор: bsa 13.1.2014, 17:10 |
| возможно, из-за разных параметров. Так как в обоих случаях запускается tasm. |