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

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

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

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

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

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

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

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

extern - C++
Собственно как правильно пользоваться такой штукой? 1. Где нужно использовать: 1) только в заголовочном файле 2) только в исходном...

директива extern - C++
Никак н могу понять как решить проблму с директивой extern. Я подключил к проекту файл libext.h и попытался скомпилировать программу. И...

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

Использование extern с функциями - C++
Добрый вечер! Скажем я задекларировал в каком-то модуле функцию extern void foo() ;. Но не описал её. Могу ли я при подключении...

( extern char ) переопределение; - C++
Здравствуйте. В file.cpp использую: char *SOUND_TRAPPED = { "zbm4/zombi_trapped.wav", // male ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
02.06.2010, 17:29 #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++
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2010, 17:29
Привет! Вот еще темы с ответами:

Проблема с extern-переменными - C++
Такие дела. У меня два файла, func.cpp и main.cpp //func.cpp double sum, count; double average(double num) { sum += num; ...

Ключевое слово extern - C++
Есть код в файле file1.cpp #include "stdafx.h" #include <iostream> #include <string> #include "file2.cpp" int main() { ...

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

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


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

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

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