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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить значение выражения http://www.cyberforum.ru/cpp-beginners/thread1076397.html
Помогите, надо написать программу решения задачи.
C++ Напишите программу, считающую выражение Здравствуйте, В общем нужно написать программку, которая будет считать(картинка прилагается) Сам недавно начал изучать С++, пока осваиваю азы. Но вот экзамен через пару дней. Прошу помощи. http://www.cyberforum.ru/cpp-beginners/thread1076396.html
Для строк символов определить какой символ в каждой строке подряд наибольшее число раз C++
Уважаемые завсегдатые данного форума. Нужна ваша помощь: необходимо написать 2 задачи со строками и массивами на С++. Буду благодарен любой помощи. Для строк символов определить какой символ в каждой строке подряд наибольшее число раз. Ввести две целочисленные таблицы А, B. Проверить, являются ли эти таблицы похожими, т.е. если совпадают множества чисел, встречающихся в таблицах.
Обратная польская запись.Написал программу по алгоритму.Нужно кое-что изменить C++
Преподаватель дал мне "алгоритм" и сказал написать программу по этому алгоритму. "Алгоритм":Нам понадобится стек для переменных типа char, т.к. исходное выражение мы получаем в виде строки. Рассматриваем поочередно каждый символ: 1. Если этот символ - число (или переменная), то просто помещаем его в выходную строку. 2. Если символ - знак операции (+, -, *, / ), то проверяем приоритет данной...
C++ Удаление из заданного списка все вхождения элемента с заданным значением информационной части http://www.cyberforum.ru/cpp-beginners/thread1076370.html
Написать программу, удаления из заданного списка все вхождения элемента с заданным значением информационной части
C++ Найти ошибку в приведенном коде На самом деле тут две ошибки. Первое, ругается windows при запуске (есть комментарий на какую строку). Второе - не понимаю как сделать умножение ( комментарием помечено). #include <iostream> using namespace std; #include <process.h> //////////////////////////////////////////////////////////////// class D_Array { private: подробнее

Показать сообщение отдельно
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
20.01.2014, 16:10  [ТС]     Как верно экспортить функцию?
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 ?
 
Текущее время: 08:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru