Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить значение выражения http://www.cyberforum.ru/cpp-beginners/thread1076397.html
Помогите, надо написать программу решения задачи.
C++ Напишите программу, считающую выражение Здравствуйте, В общем нужно написать программку, которая будет считать(картинка прилагается) Сам недавно начал изучать С++, пока осваиваю азы. Но вот экзамен через пару дней. Прошу помощи. http://www.cyberforum.ru/cpp-beginners/thread1076396.html
Для строк символов определить какой символ в каждой строке подряд наибольшее число раз C++
Уважаемые завсегдатые данного форума. Нужна ваша помощь: необходимо написать 2 задачи со строками и массивами на С++. Буду благодарен любой помощи. Для строк символов определить какой символ в...
Обратная польская запись.Написал программу по алгоритму.Нужно кое-что изменить C++
Преподаватель дал мне "алгоритм" и сказал написать программу по этому алгоритму. "Алгоритм":Нам понадобится стек для переменных типа char, т.к. исходное выражение мы получаем в виде строки. ...
C++ Удаление из заданного списка все вхождения элемента с заданным значением информационной части http://www.cyberforum.ru/cpp-beginners/thread1076370.html
Написать программу, удаления из заданного списка все вхождения элемента с заданным значением информационной части
C++ Найти ошибку в приведенном коде На самом деле тут две ошибки. Первое, ругается windows при запуске (есть комментарий на какую строку). Второе - не понимаю как сделать умножение ( комментарием помечено). #include <iostream>... подробнее
pEntity
106 / 119 / 28
Регистрация: 12.12.2012
Сообщений: 1,274
20.01.2014, 16:10  [ТС] 0

Как верно экспортить функцию?

20.01.2014, 16:10. Просмотров 2327. Ответов 45
Метки (Все метки)

Ответ

C++
1
2
3
.text:1000BA40 ; int __stdcall SumFunc()
.text:1000BA40                 public ?SumFunc@@YGHXZ
.text:1000BA40 ?SumFunc@@YGHXZ proc near
C++
1
2
3
4
5
6
extern "C++"
__declspec(dllexport)
int _stdcall SumFunc()
{
    return 0;
}

/* ------------------------------ */

C++
1
2
3
.text:1000BA40 ; int __cdecl SumFunc()
.text:1000BA40                 public ?SumFunc@@YAHXZ
.text:1000BA40 ?SumFunc@@YAHXZ proc near
C++
1
2
3
4
5
6
extern "C++"
__declspec(dllexport)
int _cdecl SumFunc()
{
    return 0;
}

/* ------------------------------ */

C++
1
2
3
.text:1000BA40 ; int __stdcall SumFunc()
.text:1000BA40                 public _SumFunc@0
.text:1000BA40 _SumFunc@0      proc near
C++
1
2
3
4
5
6
extern "C"
__declspec(dllexport)
int _stdcall SumFunc()
{
    return 0;
}
/* ------------------------------ */

C++
1
2
3
.text:1000BA40 ; int __cdecl SumFunc()
.text:1000BA40                 public _SumFunc
.text:1000BA40 _SumFunc        proc near
C++
1
2
3
4
5
6
extern "C"
__declspec(dllexport)
int _cdecl SumFunc()
{
    return 0;
}

/* ------------------------------ */

Всегда искажение. Я что-то не понимаю или делаю не так ? Но мне нужно, чтоб экспортная функция не искажалась, а имела такое же имя как и функция сама.

Работаю в VS 2012.

Или без DEF файла ни как ?

Добавлено через 12 минут
Понятно почему теперь подчеркивает.

А где это в VS ?

Прототип функции Test(int); мог быть преобразован компилятором, например в ?Test@@YAKH@Z.
Естественно, такое декорирование нам вообще не по душе. Избавиться от него можно объявляя все экспортируемые функции с модификатором extern "C" - тогда компилятор не будет искажать имя функции.

Однако, как мы видим, нижние подчёркивание всё же добавилось.
Это один из нюансов среды C++ Builder. Однако, можно отучить его добавлять нижнее подчёркивание таким образом:
Project -> Options -> C++ Compiler -> Output -> Generate underscores on symbol names - перевести в состояние false.
И какая разница между __cdecl и _cdecl ?

Вернуться к обсуждению:
Как верно экспортить функцию?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2014, 16:10
Готовые ответы и решения:

Задача логические функции (составить функцию, которая определяет верно ли что сумма цифр числа четное число)
Помогите нужно составить функцию, которая определяет верно ли что сумма цифр...

Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию)
помогите решить пожалуйста Задание 2. Бинарная операция Создать класс...

Как правильно вызвать функцию с указателем на другую функцию как параметр
Вот вариант: double f(double x) { ... } double k(double...

Как верно узнать размер указателя ?
СBaseTest* pTest = { new СBaseTest, new СOther }; Нужно узнать размер pTest

Как верно перевести формулу на язык c++?
Приветствую! Столкнулся с такой задачей в университете на 1 курсе... нужно...

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