Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Почему нельзя переделать dll в exe, изменив входную функцию?

08.03.2013, 00:13. Показов 1166. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Да почему?
Прикладываю проект, он очень прост. Вот на всякий случай код *.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"   
#define WIN32_LEAN_AND_MEAN 
#include <windows.h>
 
 
//int main () {
//    return 0;
//}
 
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                               ){
    return TRUE;
}
 
 
int DllGetClassObject(){
   return 0;
}
Скомпильте, скомпилится без ошибок. А теперь вместо DllMain подставьте main (она пока закомпилена), ага. Ошибок ТАКЖЕ не будет, как не будет и экзешника, а как была dll-ка, так и останется.

В чём дело? Если компилятор берёт на себя смелость распознавать конечный проект по прототипу входной функции (компилит ведь без ошибок), почему же он его не кропает, конечный проект-то?

Спасибо, кто откликнется.
Вложения
Тип файла: rar dll_i_exe.rar (5.65 Мб, 5 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2013, 00:13
Ответы с готовыми решениями:

Переделать проект из exe в dll
Постепенно делал не большой свой проект и в итоге перерасло, что его надо использовать в другом. При этом передавать значения из одного в...

Как переделать EXE file в DLL?
SOS!!! Help me переделать EXE file в DLL in Visual Basic

Почему функцию sqrt нельзя применять к int переменным, а только к double и flot?
Почему функцию sqrt нельзя применять к int переменным, а только к double и float? Извините за опечатку в названии темы.

4
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
08.03.2013, 00:24  [ТС]
А, разобрался, там в свойствах проекта надо было указать что на выходе ожидается *.exe
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
08.03.2013, 00:24

Не по теме:

когда передаешь кому-то проект студии то удаляй файл *.sdf, а так же папки Debug/Release/ipch


Цитата Сообщение от kravam Посмотреть сообщение
Скомпильте, скомпилится без ошибок. А теперь вместо DllMain подставьте main (она пока закомпилена), ага. Ошибок ТАКЖЕ не будет, как не будет и экзешника, а как была dll-ка, так и останется.
а с чего бы должен появится экзешник? имя точки входа никак не влияет на то что будет в результате экзешник или длл
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.03.2013, 02:23
Ну а ты с консоли(ручками) компилируешь что ли ?
-Нет вот и загляни в файл проекта dll и обычного проекта, найди отличия...
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
08.03.2013, 02:32  [ТС]
Jupiter,
Я бы по-другому объяснил.
Если задать задание создать*.dll, тогда компоновщик будет искать такую функцию:

C++
1
2
3
BOOL APIENTRY DllMain( HANDLE hModule, 
//                       DWORD  ul_reason_for_call, 
//                       LPVOID lpReserved)                            )
Если он её не находит, оно просто подставляет вместо неё стандартную (по аналогии с конструктором по умолчанию для классов. Если программист не написал конструктор, компилятор подставит встроенный), и в этом случае ВСЕ ОСТАЛЬНЫЕ функции НЕ РАССМАТРИВАЮТСЯ как кандидаты на точку входа. И всё равно, main- не main. Вышеуказанной функции нет- подставляется встроенная.

А main (если есть) в этом случае рассматривается как ОДНА ИЗ рядовых функций. Это мой случай. Я думал что она и будет точкой входа и ожидал, что соответственно создастся экзешник, но я ошибался.

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
Ну а ты с консоли(ручками) компилируешь что ли ?
-Нет вот и загляни в файл проекта dll и обычного проекта, найди отличия...
чего?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.03.2013, 02:32
Помогаю со студенческими работами здесь

Переделать задачу на строки, изменив конец ввода
Имеется задача:Вводится текст. Если в заданный текст входит каждая из букв слова &quot;true&quot;, тогда напечатать &quot;yes&quot;, иначе...

Как вызвать функцию .exe из .dll?
Надо как то вызвать функцию которая объявлена и определена в .exe из .dll, не юзая хуки, что можно придумать? В момент запуска .exe, .exe...

Как из DLL вызвать функцию, находящуюся в exe?
Плз. скажите, как из DLL вызвать функцию, находящуюся в exe'шнике. Плз.! Плз.! Плз.!

Переделать задачу на массив, изменив рандомный ввод данных на ручной
Массив 6 на 8 заполняется рандомно, нужно переделать так, чтобы вводить данные вручную. program matr; uses Crt; type vector = array...

Svchost.exe, onion.exe, openvg.exe torrc и куча dll и cl, а также папка tor в Roaming


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru