Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,914
Записей в блоге: 16
1

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

23.08.2014, 02:30. Просмотров 570. Ответов 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
Ответы с готовыми решениями:

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

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

Возвратить object в экспортируемой функции dll
Добрый день. есть функция в dll, которая использует сторонние tlb (они...

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

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

2
Убежденный
Ушел с форума
Эксперт С++
16128 / 7275 / 1181
Регистрация: 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
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,914
Записей в блоге: 16
23.08.2014, 17:09  [ТС] 3
Спасибо.
Так выглядит хорошо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2014, 17:09

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

Зачем нужен .def - файл?
Не так давно, где-то лет 5 назад, когда я учился писать первые программы на...

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


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

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

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