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

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Dragokas
Эксперт WindowsАвтор FAQ
16242 / 6941 / 834
Регистрация: 25.12.2011
Сообщений: 10,722
Записей в блоге: 16
#1

Отключение декорирования имени экспортируемой функции через DEF-файл - C (СИ)

23.08.2014, 02:30. Просмотров 527. Ответов 2
Метки нет (Все метки)

Здравствуйте !

Поправьте меня, пожалуйста, если я где-то ошибаюсь.

Создаю DLL. Проект такой:

DllMain.c
C
1
2
3
4
5
6
7
8
9
#include <windows.h>
 
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    return TRUE;
}
functions.h
C
1
extern __declspec( dllexport ) int __stdcall plus(int a, int b);
main.c
C
1
2
3
4
5
6
7
8
#include "functions.h"
//#pragma comment(linker, "/export:plus=_plus@8")
#pragma comment(linker, "/def:TestDll4.def")
 
int __stdcall plus(int a, int b)
{
    return (a + b);
}
TestDll4.def
C
1
2
3
LIBRARY TestDll4
EXPORTS
_plus@8 = plus
Но имя экспортированной функции на выходе получается _plus (в стиле stdcall).
Можно ли с помощью способа с DEF "избавится" и от знака _ ?

В принципе меня устраивает и закомментированный вариант (2 имени функции - plus и _plus@8).
Я спрашиваю чисто из теоретического интереса (среда MS VS 2010).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2014, 02:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отключение декорирования имени экспортируемой функции через DEF-файл (C (СИ)):

При использовании функции fgets () и вводе абсолютно правильного имени файла программа не может открыть файл - C (СИ)
Прошу прощение за беспокойство и за глупый вопрос, но вoобщем проблема такая: Программа определяет существует ли в текущей директории...

Вызов не экспортируемой функции - C++ WinAPI
Есть некий модуль exe, без проблем можно подгрузиться в его процесс, у этого модуля есть внутренние функции. Возможно ли их найти и...

Возвратить object в экспортируемой функции dll - C++
Добрый день. есть функция в dll, которая использует сторонние tlb (они подключены в h): extern &quot;C&quot; _declspec(dllexport) int...

Файл hello.def - Assembler
Здравствуйте, интересует такой вопрос: для чего нужен файл hello.def, его структура и содержание.

Функция сложение на Python! Через def, while и if - Python
Есть вот такой код! def print_num(x , y): while True: if operation == '+': result = x + y ...

Зачем нужен .def - файл? - C++
Не так давно, где-то лет 5 назад, когда я учился писать первые программы на С++, я установил Borland C++ 5.0 (поскольку МАДИшный Borland C...

2
Убежденный
Ушел с форума
Эксперт С++
15794 / 7231 / 1138
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
23.08.2014, 10:55 #2
Следует использовать что-то одно - или declspec(dllexport), или DEF-файл.
При использовании DEF-файла декорирования имен не происходит:
Код
LIBRARY "mylibrary.dll"

EXPORTS
    FunctionA
    FunctionB
    ...
    FunctionX
Если, конечно, самому их не задекорировать до неузнаваемости.
1
Dragokas
Эксперт WindowsАвтор FAQ
16242 / 6941 / 834
Регистрация: 25.12.2011
Сообщений: 10,722
Записей в блоге: 16
23.08.2014, 17:09  [ТС] #3
Спасибо.
Так выглядит хорошо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2014, 17:09
Привет! Вот еще темы с ответами:

Как открыть файл DEF - Софт
Как это сделать?

Листинг функции def step(n,d) - Python
Здравствуйте, помогите разобраться пожалуйста с функцией. В Python не могу вообще ничего, мне нужно понять что происходит в этой функции и...

Запуск программы от имени администратора через bat-файл - CMD/BAT
Добрый вечер! Необходимо запустить программу от имени администратора, находясь под учётной записью пользователя (User2). Я создал...

Как добавить .def файл в проект? - C++
Как добавить .def файл в проект?


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

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

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