Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > MSVC++6 - Имена функций DLL


Автор: LLIypik 5.10.2003, 10:07
Почему, когда в MSVC++6 делаешь dll, к именам функций добавляются вопросики и какие-то буквы?
Как от этого избавиться?

Автор: mr.DUDA 5.10.2003, 10:56
Чтобы компилер не изменял имена функций, нужно при объявлении ф-ции указать модификатор "C".
В целом, стандартно (без ковыряния DEF-файла) dll'ка делается так:
Код

#define FN_EXPORT extern "C" __declspec(dllexport)
#define FN_IMPORT extern "C" __declspec(dllimport)

// ..... DLL

FN_EXPORT int MyFunc(int a, bool b)
{
     if(b)  return a*2;
           else  return a;
}

// ..... EXE

FN_IMPORT int MyFunc(int a, bool b);

void main()
{
     int x = MyFunc(100, true);
}


Для EXE'шки в настройках линкера (меню Project -> Settings -> Link -> Object/Library modules) надо прописать имя ".lib"-файла, автоматически создаваемого вместе с каждой DLL (если DLL'ок несколько, то имена lib-файлов идут через пробел).

Автор: marcusmae 6.10.2007, 19:30
Цитата(mr.DUDA @  5.10.2003,  10:56 Найти цитируемый пост)
Чтобы компилер не изменял имена функций, нужно при объявлении ф-ции указать модификатор "C".


Хотел задать вопрос, как избежать декорирования имён функций, но вот и ответ уже есть  smile
Работает. Спасибо, mr.DUDA, и встроенному поиску.

Автор: mr.DUDA 6.10.2007, 22:41
(оффтопик) Сударь, ну вы даёте... 4 года уж минуло  smile 

вот что значит С++  - бессмертный язык...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)