Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
mister2010
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 64
1

Нахождение _export в теле extern

02.06.2010, 16:37. Просмотров 832. Ответов 1
Метки нет (Все метки)

Ключевое слово _export нужен для того, чтоб экспортировать функции которые мы описываем в файле cpp, тип проекта которого длл, експортировать в файл .*exe.
1)Когда я подключил скомпилированный длл к файлу екзе, каким образом идёт пользование экспортируемыми функциями, они вызываются в файле екзе?

2)Что означает если я напишу:
Код
extern "C" {
void WINAPI _export masha()
               }
Меня интересует слово:
Код
extern "C"
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2010, 16:37
Ответы с готовыми решениями:

Что означает extern "C" или extern "C++"?
Например такой код, extern "C" void f(); Или C++ вместо C. Что это означает и...

Extern в C/C++
Оговорка - собирал все под VS2015 и под него же с Clang'ом для убедительности....

extern
Собственно как правильно пользоваться такой штукой? 1. Где нужно использовать:...

директива extern
Никак н могу понять как решить проблму с директивой extern. Я подключил к...

Extern template
Не могу понять, в книге пишут: Примерно понимаю, при компиляции будет...

1
odip
Эксперт С++
7162 / 3221 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
02.06.2010, 17:29 2
Лучший ответ Сообщение было отмечено mister2010 как решение

Решение

C++
1
2
3
extern "C" {
  int тут_некая_функция()
}
Это обозначает что тут_некая_функция() будет использовать совместимый с языком C способ вызова функции.
Язык C и язык C++ используют разные способы вызова своих функций.
Если некий объектный файл или библиотека ( что суть архив объектных файлов ) скомпилирован с помощью компилятора C
а затем нужно вызывать эти функции из языка C++,
то как раз это указание и нужно для компилятора C++.
Иначе он будет думать что это функции C++ и вызывать их как C++ функции и при сборке будет полная ерунда.

Обычно код несколько не такой:

C
1
2
3
4
5
6
7
8
9
#ifdef __cplusplus
extern "C" {
#endif
 
int some_func();
 
#ifdef __cplusplus
}
#endif
Такое обрамление позволяет компилироваться этому коду и в C и в C++
так как конструкцию extern "C" не понимает компилятор C++
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2010, 17:29

Использование extern с функциями
Добрый вечер! Скажем я задекларировал в каком-то модуле функцию extern void...

что такое extern?
что будет если не написать extern,если можно с примерами

Зачем нужен extern?
Знаю, что в интернете полно объяснений зачем он, но я не могу понять... Везде...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru