![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Если хочешь, чтобы она могла вызываться из других модулей (exe или dll), она должна быть либо скомпилирована как __declspec(dllexport) , либо экспортирована через def-файл. Это Microsoft specific, у других линкеров-компиляторов может быть по другому. При этом никаких extern не требуется, имя функции вообще может не фигурировать в h-файлах (функция extern по-умолчанию, если она не static и не в анонимном namespace). -------------------- ... |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
Чаще делают с extern "C" для лучшей совместимости, между разными языками программирования при вызове из ехе-шников
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
extern "C" - это из другой оперы.
Ключевое слово extern "C" ничего не экспортирует и не импортирует. Так объявляют С-функции в CPP программах, чтобы их истинные имена (для линкера) декорировались как в C, а не как в C++. И совместимость тут не при чем, просто C-имена, в отличие от имен C++, не содержат ничего "лишнего". Если функцию модуля, написанного на другом языке, не объявить как extern "C", линкер добавит к имени всякие рюшечки, и т.о. фиг найдет ее в другом модуле. Скажем, простая функция void Func() будет в объектнике называться ?Func@@YAPAXXZ (для MSVC). -------------------- ... |
|||
|
||||
| Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
По-моему, нет.
Совместимость - это не совпадение имен, а в первую очередь calling convensions, порядок и формат параметров и пр. Имена как раз можно подменить (при экспорте через def-файл, например). -------------------- ... |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
окей я не прав
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| ZAVS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 25.2.2004 Где: ЕРЕВАН Репутация: нет Всего: 1 |
Всем большое спасибо
--------------------
Учись студент доцентом станешь :) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |