Функция связи c в Nasm - PullRequest
       9

Функция связи c в Nasm

0 голосов
/ 20 марта 2011

получил проект nasm, и я вызываю из него функцию ac

Я помещаю имя функции в "extern"

и при соединении я соединяю все ссылки, но яможет ошибка "неопределенная ссылка на"

вот моя команда компиляции / ссылки

gcc -o Project4 Project4.o array1c.c readdouble.o writedouble.o readarray.o printarray.oaddarray.o invertarray.o invertarray2.o invertarray3.o averagearray.o quicksort.c

1 Ответ

1 голос
/ 20 марта 2011

Сначала я скомпилирую все ваши файлы .c, используя команду "gcc -c", в объектные файлы, а затем свяжу полученные результирующие файлы .o (например, "array1c.o" и "quicksort.o") вместе с вашимидругие ранее существующие объектные файлы и посмотрите, дает ли это вам неопределенную ссылку.Это может быть ненужным шагом, но я никогда не объединял необработанные файлы .c и .o в одном вызове gcc.

Возможно, вам также придется добавить подчеркивание в начале любой c-функцииназывается ... Я знаю, что это зависит от платформы (то есть Linux обычно не требует подчеркивания на c-функциях, тогда как OSX и некоторые другие платформы UNIX делают это).

Наконец, вы можете попробовать, используя ldпросто связать все объектные файлы одновременно, а не связать некоторые объектные файлы вместе в Project4.o, а затем связать это с тем, что вы собрали, используя nasm (по крайней мере, это то, что я предполагаю, что вы делаете,т. е. вы создаете Project4.o, а затем вызываете функции из этого кода ассемблера).

Надеюсь, это поможет,

Джейсон

...