Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Подключение библиотеки, написанной на Asm, к C-программе (http://forum.oszone.net/showthread.php?t=30362)

XXXX Pro 10-08-2003 07:14 208351

У меня такая проблема: я написал программу на Visual C и мне нужно использовать в ней функцию, написанную на Assemblerе (MASM32).
И программа, и эта процедура скомпилировались нормально, а вот при связывании (линковке) начались проблемы: хотя процедура на Ассемблере и ее прототип в C называются одинаково, после компиляции они получают разные имена, (т.е. изначально процедура называлась procMD5hash, после компиляции в MASM32 она называется _procMD5hash@12, а после компиляции в C - ?procMD5hash@@YAXPADH0@Z), соответственно, link дает сообщение fatal error LNK1120: 1 unresolved externals. Кто-нибудь знает, как с этим бороться?

ivank 10-08-2003 13:15 208352

XXXX Pro
Ну, наверное еомпилировать программу в режиме C, а не C++, во-первых. Ну или написать extern "C" в прототипе используемой функции. В MASM'е, наверняка тоже есть ключики для того, что бы давать экспортируемым функциям сишные названия, но я его не знаю, т.к. масмом не пользуюсь (nasm рулит :)).

XXXX Pro 10-08-2003 23:33 208353

Да, оказалось, что добавить extern "C" и объявить функцию как stdcall, и все скомпилировалось нормально. Спасибо!


Время: 19:54.

Время: 19:54.
© OSzone.net 2001-