Связать файл Windows .obj с проектом C++ с помощью NetBeans/GCC/NASM

Опубликовано: Пн, 22 ноября 2010 г., 2:30. Тема сообщения: Как связать объект сборки с проектом C++
Привет,

Я пытаюсь связать программу сборки с моей программой на С++. Я использую NASM для создания файла .obj с помощью команды «nasm -fobj myprogram.asm». Файл .obj создан, но я не знаю, как связать его с моим проектом. Я попытался добавить файл в Linker-> Dependencies, но все равно получаю сообщение об ошибке, что моя функция внешней сборки не определена. Может быть, файл .obj находится не в том каталоге (он находится в корневой папке проекта вместе с файлами .cpp)?

Может ли кто-нибудь дать простое объяснение того, как связать файл .obj на языке ассемблера с моим проектом?

Спасибо, -КБ


person enoculus    schedule 23.11.2010    source источник


Ответы (1)


Убедитесь, что вы правильно исказили имя в коде ассемблера. IIRC, __stdcall используется по умолчанию в 32-битном MSVC, и он добавляет подчеркивание и добавляет @ [байты аргументов]. Итак, size_t strlen( const char *str ), если скомпилировать __stdcall, он будет искажен до _strlen@4.

Посмотрите здесь или здесь для более подробной информации.

person JimR    schedule 24.11.2010
comment
Единственная информация, которую я нашел о NASM/GCC, указывает на то, что мне нужно добавить подчеркивание (_) к имени функции в файле ASM. Но это не помогает. У меня такое ощущение, что я не говорю NetBeans, как правильно связать файл, но я новичок в этом, поэтому я не совсем уверен. Я следовал указаниям в сообщении форума NetBeans, в котором указывалось, что добавление файла myprojgram.obj в зависимости компоновщика свяжет файл... - person enoculus; 26.11.2010
comment
@enoculous Используйте objdump (или что-то еще, что ваша платформа использует для просмотра файлов obj) и посмотрите, какие имена есть в objs, и опубликуйте их здесь, а также любые переключатели компилятора, связанные с соглашением о вызовах, вещи, встроенные в код, и т. д. и я посмотрю если я могу понять это. - person JimR; 28.11.2010