Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Добавляю экспортируемую функцию в exe-файл. Ошибка |
Автор: neosapient 1.8.2019, 18:24 | ||||||||
Здравствуйте. exe-файл и dll-файл похожи наличием PE заголовка. Хочу в exe-файл добавить экспортируемую функцию. А затем через LoadLibrary и GetProcAddress запустить её в другой программе. Но Runtime ругается при выделении памяти: >> Unhandled exception at 0x0001831a in mytest.exe: 0xC0000005: Access violation. Программа пустышка, в которую я добавляю PE заголовок.
А вот и экспортируемая функция. В настроках проекта добавил макроопределение MYLIB_EXPORTS
Вторая программа, которая загружает fnmylib из первой программы, выглядит так.
Успешно загружается LoadLibrary("myapp.exe") Успешно получаю адрес fnmylib и перехожу в неё. При вызове new char [1]; происходит падение программы >> Unhandled exception at 0x0001831a in mytest.exe: 0xC0000005: Access violation. Что делаю не так? |
Автор: xvr 2.8.2019, 13:30 |
exe это не dll, хотя и похожи. Вы можете загрузить exe из другого exe, но исполняться он (загруженный) не будет. И попытки позвать оттуда что либо обречены на неудачу. Что бы exe заработал ему нужен своё собственное адресное пространство, и собственно процесс запуска (у dll он другой, так что точка запуска exe вызвана не будет) |
Автор: LeonidPr 2.8.2019, 15:44 |
Если GetProcAddress нашла функцию, значит экспорт идет без проблем. Проблема в инициализации где-то, т.к. валится на new, ему куча нужна настроенная. https://stackoverflow.com/questions/19110747/loadlibrary-an-exe как раз об этом же пишут и рассказывают что там не так инициализируется. Т.е. какие-то очень ограниченные функции можно экспортировать но постоянно будете в проблемы упираться. P.S. Там есть https://www.codeproject.com/Articles/1045674/Load-EXE-as-DLL-Mission-Possible интересная на CodeProject.Но имхо это изврат |
Автор: neosapient 3.8.2019, 00:36 |
Спасибо. Жаль, что нет простого решения. |
Автор: LShadow77 12.8.2019, 12:54 |
А вот я всегда задавался вопросом, какой смысл экспортировать что-то из exe-файла? |