Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mister2010
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 64
#1

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

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

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

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

директива extern C++
C++ _export
Проблема с extern-переменными C++
Не работает extern для vector C++
C++ ( extern char ) переопределение;
C++ что такое extern?
extern C++
C++ Использование extern с функциями
C++ Подключение файлов через extern
Ключевое слово extern C++
C++ Extern template
Зачем нужен extern? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
02.06.2010, 17:29     Нахождение _export в теле extern #2
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++
Yandex
Объявления
02.06.2010, 17:29     Нахождение _export в теле extern
Ответ Создать тему
Опции темы

Текущее время: 07:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru