3 / 3 / 2
Регистрация: 11.03.2014
Сообщений: 15
|
|
1 | |
C++ DLL и WinAPI11.03.2014, 21:00. Показов 3390. Ответов 31
Метки нет (Все метки)
У меня есть приложение с заголовочным файлом, в котором описаны два класса, используемые в программе. Как мне создать dl-ку и использовать её в проекте?
0
|
11.03.2014, 21:00 | |
Ответы с готовыми решениями:
31
Программа на WinApi требует Msvcr*.dll Вызов функции из DLL, показывающей DialogBox - WinAPI Подскажите, как вызвать в основном файле функцию из .dll, используя функции WinAPI Использование WinAPI в C#. Библиотека "User32.dll" |
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|||||||||||
12.03.2014, 17:29 | 21 | ||||||||||
Я хочу функцию, при обращении к которой выводилось бы кол-во аргументов и их тип.(+возвр. знач) Ну полной динамики врят ли можно добиться таким путём, только через блок схему алгоритмов файлов, но это конешно настолько из*п, что реализация будет затрачивать 100% цпу мозга, который в конечном итоге расплавится)))
0
|
Заблокирован
|
|||||||||||
12.03.2014, 17:44 | 22 | ||||||||||
Ты имеешь ввиду, без написания тайпдефа ...
Ну ты можешь сделать что - то вроде InputLayout-ов в DirectX11 :-)))))) Где создаётся описатель данных в вертекс буффере ... ладно, проехали :-)))) Можешь сделать функцию общего типа, точнее несколько функций, которые будут различаться кол-вом параметров, например:
В общем для того что ты хочешь - тебе надо добропожаловать в ассемблер Где ты вручную будешь нужно кол-во параметров пушить в стек и сам их возвращать ...
0
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
12.03.2014, 18:05 | 23 |
Нет. Это не динамика.
В раздел выше "С++", уже есть тема, про union. Я таки пришёл к тому что VARIANT не даст мне всех нужных типов(например HWND, FILE, DWORD...), а привидение типов - не сделать динамически(на сколько я понимаю). Потому придётся делать собственный VARIANT, и реализовывать типы через enum... Тут единственное что, так я понимаю что если я делаю всё через один cpp файл(как например в теме "окна без файла ресурсов", ну думаю видел тему), то я тупо в глобальных всё это объявлю, а вот если DLL, то прокатит ли? =) what is that? Я видел "переменно кол-во аргументов", которое троеточием прописывается(ну точнее я использую для Excel Ole такую функцию), но как оно там работает - как то стрёмно разбираться, выглядит так, как будто может возникнуть ошибка, а в этом случае - нафига мне всё это, если есть эта 1С программа с кучей багов, я дублировать баг программы не хочу, надо всё по уму сделать и просто=) нене, изврат не предлогать, я поэтому и классов сторонюсь, что там точно так же "чёрт голову сломает". На самом деле, я вот думаю... если я одним cpp файлом всё буду реализовывать, то мне аргументы вообще по барабану будут, т.к. они будут "почти глобальными", т.е. я их когда надо создам, когда надо - удалю, с этим проблем через cpp файл не будет.(но будут проблемы с итоговым размером файла этого, если уж сейчас 15000 строк кода, то что будет после) В общем, попробую выпить яду, может поможет)))
0
|
Заблокирован
|
|
12.03.2014, 18:23 | 24 |
это выход!
Лучше делай функцию, которая имеет один лишь аргумент - строку и возвращает тоже строку, а уж эту строк ты сможешь парсить как захочешь ...
0
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|||||||||||
12.03.2014, 18:38 | 25 | ||||||||||
Да, только что об этом подумал... В принципе это поможет, а исходя из типов аргументов уже конвертировать назад и вперёд.
Так, тогда функция будет выглядеть не так:
0
|
Заблокирован
|
|
12.03.2014, 20:56 | 26 |
а что за тип данных такой STRING ?
передаваться в функцию и возвращаться должны конечно же указатели на NULL терминейтед стринги, char* или wchar_t*. Тут правда Убеждённый как - то говорил, что аллокатор new не подойдёт для передачи данных из DLL в софт, по этому лично я рекомендую использовать SysAllocateString для аллокации памяти под строку типа BSTR (wchar_t*) и соответственно SysFreeString для её освобождения... Добавлено через 55 секунд typedef *BSTR (WINAPI MESS)(BSTR )
0
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
12.03.2014, 21:12 | 27 |
Не понял... Поясни пожалуйста.
New, это же оператор(ну или как ты сказал "аллокатор") который "создаёт" переменную(образно), т.е. если у меня структура, экземпляр которой создаётся с помощью New, то как я его обойду? Что то я совсем не догнал.
0
|
Заблокирован
|
|
12.03.2014, 21:20 | 28 |
нде... Рано тебе ещё на ветке WinApi сидеть, ролбэкайся на С++ для начинающих
Allocate = выделять, это оператор выделения памяти, тоесть аллокатор. ОН ничего не создаёт, он выделает память заданного объёма, правда кое с какими хитростями (там можно узнать тип и размер выделенной памяти...) Причём тут структура? Я тебе говорил про твои строки, которые будешь кидать в DLL и обратно. Внутри DLL или внутри софта можешь делать что хочешь, а вот для передачи, например, в DLL строки - сначала выделаешь под неё память SysFreeString - гом, после того, как закончишь в ней работать в DLL, освобождаешь в DLL, выделенную в основной программе под неё память посредствам SysFreeString (в DLL вызываешь в данном примере).
0
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
12.03.2014, 21:35 | 29 |
Я же сказал "образно".
А причём тут New тогда?.. Имеется же ввиду, что если я с помощью New выделяю память для переменной ( ну образно - создаю переменную ), то это будет не правильно, вы же об этом написали?.. А я кидаю именно переменные, которые с помощью New созданы, т.е. из структуры с вложенным union.
0
|
Заблокирован
|
|
12.03.2014, 21:48 | 30 |
Я написал, что:
За подробностями - к нему. Какие переменные? Мы ж с тобой уже договорились, что твоя функция будет принимать и возвращат чисто строки
0
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
12.03.2014, 22:03 | 31 |
Принимает строки, чем и как созданные? У меня полная динамика, я строки с помощью union in structure "создаю", а не обычным методом типа: char buf[500];
Первое, это не вы написали, а Убеждённый. Второе - про ограничения не было и слова, а это ключевой момент в понимании "почему нельзя", я же не солдат, которому сказали - он сделал, без вопросов... Мы программисты народ творческий(может не все, или не все могут назваться программистами).
0
|
Заблокирован
|
|
12.03.2014, 22:12 | 32 |
Ты уже хлебнул что ли? Что ты городишь? SysAllocateString используй, сто раз что ли говорить надо? Добавлено через 1 минуту Ты читать не умеешь?
0
|
12.03.2014, 22:12 | |
12.03.2014, 22:12 | |
Помогаю со студенческими работами здесь
32
Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями? Затупил, скажите где взять libmysqld.dll, libmysqld50.dll, libmysqld51.dll Сборка Qt: отучение Qt от mingw10.dll, libgcc_s_dw2-1.dll и других Qt***.dll Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |