Форум программистов, компьютерный форум 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: подробнее

Показать сообщение отдельно
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,356
Завершенные тесты: 1
20.01.2014, 15:10     Как верно экспортить функцию?
Цитата Сообщение от pEntity Посмотреть сообщение
Если бы стек удалился, то функция была бы чистым именем, без всяких доп символов.
Вы путаете два понятия - соглашение о вызовах и декорацию имен.

Соглашение о вызовах (calling convention) определяет формат передачи аргументов в функцию.
Например, при _stdcall они передаются через стек, а затем удаляются оттуда вызываемой
функцией, в то время, как при _cdecl за очистку стека отвечает вызывающая сторона.

Декорация имен (name mangling) - "искажение" имен функций или данных во время экспорта.
Результат зависит от типа компоновки (extern "C" или extern "C++"), способа экспорта (DEF-файл
или директива __declspec(dllexport)) и типе соглашения о вызовах.

Чтобы в Visual C++ получить неискаженное имя, нужно или использовать DEF-файл, или
extern "C" + _cdecl.

Вот, набросал простенький примерчик:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
extern "C++"
__declspec(dllexport)
int _stdcall Dllexport_Cpp_Stdcall(int, int)
{
    return 0;
}
 
extern "C++"
__declspec(dllexport)
int _cdecl DllExport_Cpp_Cdecl(int, int)
{
    return 0;
}
 
extern "C"
__declspec(dllexport)
int _stdcall Dllexport_C_Stdcall(int, int)
{
    return 0;
}
 
extern "C"
__declspec(dllexport)
int _cdecl Dllexport_C_Cdecl(int, int)
{
    return 0;
}
 
extern "C++"
int _stdcall Deffile_Cpp_Stdcall(int, int)
{
    return 0;
}
 
extern "C++"
int _cdecl Deffile_Cpp_Cdecl(int, int)
{
    return 0;
}
 
extern "C"
int _stdcall Deffile_C_Stdcall(int, int)
{
    return 0;
}
 
extern "C"
int _cdecl Deffile_C_Cdecl(int, int)
{
    return 0;
}
Содержимое DEF-файла:
Код
LIBRARY "MyLibrary.dll"

EXPORTS
    Deffile_Cpp_Stdcall
    Deffile_Cpp_Cdecl
    Deffile_C_Stdcall
    Deffile_C_Cdecl
Вот какие имена получили экспортируемые функции:
Код
?DllExport_Cpp_Cdecl@@YAHHH@Z
?Dllexport_Cpp_Stdcall@@YGHHH@Z
Dllexport_C_Cdecl
_Dllexport_C_Stdcall@8
Deffile_C_Cdecl
Deffile_C_Stdcall
Deffile_Cpp_Cdecl
Deffile_Cpp_Stdcall
 
Текущее время: 01:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru