Тред помощи мне в погромировании. Сразу оговорюсь что это не задание из универа или какие-то внешние курсы в очередную ойти-компанию. Вообще я безработный и на пары хожу раз в неделю. Но не суть.Суть вот в чем:Существует dll-модуль, который можно подключить к проекту на плюсах. Вопрос: как это сделать?Всё что мне нужно - создать экземпляр одного класса из той дллки. Гугл говорит про LoadLibrary, но везде очень сложно объясняют, я нипонимаю. Уяснил только то, что способа dll.Method() нет и быть не может, а посему надо ебаться с какими-то поисками с помощью GetProcAdress и вообще. Ищу анона, который объяснит на пальцах что нужно делать.
Бампаю сто тысяч раз и ухожу.
неплохо помогли ему)
>>164139152 (OP)Тебе не помогут тут.инклуд ёбана и компилишь с зависимостями хз знает ебана как называетсяи усё
>>164139152 (OP)В длл классов не бывает.Для подключения нужен *.h для этот библиотечки с импортами функций.
>>164139152 (OP)Это вроде как называется динамическая линковка. Для этой хуйни нужен файл .lib и заголовочный файл, где все эти методы задекларированы.
Блять. Я НАСТОЛЬКО фартовый, что после "не помогут", начали помогать. Пздец какой-то.
>>164139658Нет никакого хедера, длл написана вообще не на плюсах.
>>164139734
>>164139755Длл это откомпилированный код, не важно на чем написана.Без хедеров ты не сможешь узнать, какие функции в библиотеке и какие передавать параметры. Ищи примеры с этот библиотекой.
>>164139755Так в чём проблема попробовать гугловый вариант?
А вообще, вот тут все есть: https://msdn.microsoft.com/ru-ru/library/ms235636.aspxЕсли нету заголовочного файла, то либо пишешь свой, ковыряя библиотеку в ollydbg или еще где, либо ищешь в интернетах этот файл.
>>164139843https://msdn.microsoft.com/en-us/library/ms684175.aspxГде твой бог ковыряний теперь?
>>164139789У меня есть исходник. Какие функции нужно вызывать я знаю.Просто вот пример из исходника:procedure TryingGetVer(var buf:string; addrs:dessscr; args:pointer=nil); stdcall;Каким образом мне её вызывать?
>>164139878https://msdn.microsoft.com/en-us/library/ms686944.aspx
>>164139917>https://msdn.microsoft.com/en-us/library/ms686944.aspxтак-так-так.Я правильно понимаю что я не могу передать аргументы из плюсов?
>>164139917А чем ему статическое подключение не подойдет?
>>164139854И ты знаешь имена функций?
>>164139970>>164139878
>>164139951Все можешь. Библиотека будет в адресном пространстве прогрммы.
>>164139979Ну тогда можно и заголовочный файл самому написать, так бы сначала пришлось адреса узнавать.
>>164139962>Существует dll-модуль, который можно подключить к проекту на плюсах.Вопрос: как это сделать?я думал это и есть задание "научиться ебаться с dll"
>>164139986Блять. Вот смотри нахуйВ этом исходнике есть такая хуергаHoldThisUp = record fileinfo:FileInfo; procname:PAnsiChar; procarg1:PAnsiChar; procarg2:PAnsiChar; dsign:PAnsiChar; datainfo:MyDataInfo; is_he_dead:boolean;end;В следующей функции используется HoldThisUp как аргумент.Каким образом мне из плюсов передать аргумент такого типа?
>>164140051Как обычный указатель, не? Или там в примере вся структура передается?
>>164139152 (OP)Гугли на английском.
http://www.programmersforum.ru/showthread.php?t=38078Вот пример.Создай свой хедер с тем же имемем, что и dll, вдруг возьмется, и импортом лишь тех функций, что нужны.
>>164140106Нет,я напизделВ общем, мне нужно вызывать ровно одну функцию. Вот онаSendMessage(@ProcessClient, @dllinfo, @SysMsg_SendCallback ,@userdata);К примеру, аргумент dllinfo - это переменная, которая объявлялась такdllinfo:DllInfostr;Что мне конкретно нужно сделать в плюсах, чтобы я мог юзать этот аргумент.
>>164139152 (OP)Берешь дллку, с помощью виндозного сдк вытаскиваешь экспорты с неё(dumpbin) с экспортов создаешь .def файл, с .def файла создаешь .lib. С так же с .def файла создаешь с++ хидер. Подключаешь к проекту, и всё заебись компилится без всяких LoadLibrary/GetProcAddress.мануалов дохуя>https://stackoverflow.com/questions/9360280/how-to-make-a-lib-file-when-have-a-dll-file-and-a-header-fileпо ссылке второй ответ например
>>164140264Спасибо, посмотрю.
>>164140283Будет достаточно сложно создать хидер для дллки если там действительно функции от класса, хуй угадаешь как он был написан у разработчика, и с какими флагами потом была скомпилена дллка и какие функции компилятор урезал или оптимизировал, или поменял сигнатуру функции. энивей, получишь когда .def файл например конструктор класса в экспортах должен выглядеть типа _Z3fooIN3BarEE3FooIXT_EEv() на сайте demangler.com можешь расшифровать что это за хуйня. обычно на Ev() заканчиваются конструкторы классов. Вызвав эту функцию из кода, получишь поинтер на void. Дальше для этого поинтера надо будет дергать остальные функции от этого класса. Гемороя много, но в целом решаемо.
>>164139789маня не умеет в экспорты
>>164140528> 2017> уметь возиться с dll
>>164140544А что ви таки предлагаете.so?
>>164140600Исходнички, компилируемые вместе с основным проектом.
>>164140636Ну у Опа-хуя исходнички паскалеподобные могу ошибаться, да. Как там нынче дельфи с крестами совместно компилируются и работают? Через анус?
Я просто не понимаю. Как в теории это должно работать. Вот есть переменная dllinfo, которая объявлялась как dllinfo:DllInfostr.DllInfostr это вообще структура, которая в делфи в полях имеет вообще разные типы данных, которые в свою очередь тоже могут являться такими же структурами.Каким хуем я должен отправить аргумент из плюсов в эту функцию?
>>164140544понимать как работают динамические библиотеки не есть зашквар манька
>>164140673На .нет уже компилятся.
>>164140700Очевидно - хуёво
>>164140699в эту>SendMessage(@ProcessClient, @dllinfo, @SysMsg_SendCallback ,@userdata);
>>164140699Попытайся сделать такую же в хедере уже на си. А ты как хотел.
>>164140749сука, да я даже не понимаю что в некоторые переменные передается
>>164140700Библиотека - пережиток времен, когда размер кода был критичен для оперативки. Не позволю библиотерарю принять участие в моей жизни. Библиотеочервьь - не человек, криппер инсайд. Бейте его, насмехайтесь над ним!
>>164140773Тогда забей. Если сложные структуры передаются, тут или действительно дебаггером препарировать, или все-таки искать заголовки, или писать функционал самому.
Ладно, похоже действительно надо писать свой заголовок. Ну что ж - попытка не пытка, хули. Буду пытаться.Я так понимаю потом просто юзнуть LoadLibrary, найти нужную функцию и передать туда все аргументы?
>>164140806Лоад лайбрари - это динамический метод.Через хеадер - статический.Ты уж определись.
Кто-то должен это сделать.САМОЕ ВРЕМЯ ПЕРЕПИСАТЬ С ДЕЛЬФИ НА РАСТ!!!!
>>164140828Так мне методы же нет смысла описывать, разве нет? Я так думал что я в хедере опишу типы данных, а потом вызову библиотеку и в метод всё что нужно закину.
>>164140856Как ты хедер опишешь без тех структур, что передаются и возвращаются?
>>164140888Описывать структуры. Они же рано или поздно придут к простым типам.
В исходниках у функций прописал stdcall, это сильно упрощает процесс?
>>164140935прописан*
>>164140935По-моему это стандартный порядок передачи параметров, и только.
Ладно, аноны. Спасибо за помощь. Ушёл ебаться.
Оп, скинь свой пак пикч
>>164141179Подключишь мне за это дллку?
Вкатывальщики не нужны
>>164141231> Подключишь мне за это дллку?Сорян, я не програмизд
>>164139152 (OP)весь прикол картинки в том что без тонны макияжа ебало этой тян будет как у куна слева