Форум программистов, компьютерный форум CyberForum.ru

Список параметров функции из DLL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Применение is_same для списка типов http://www.cyberforum.ru/cpp/thread1652384.html
Итак, std::is_same может сравнить только два типа. Написал велосипед, который сравнивает первый тип со всеми остальными. Собственно, вот код: #include <type_traits> // ========================================================================================================= // ================================================is_same_list============================================= //...
C++ Виснет графика в SDL Здравствуйте, пишу программу, которая меняет две картинки под музыку, после нескольких секунд музыка продолжает играть, но картинки не меняются и программа получает статус "не отвечает". Почему? Буду благодарен за помощь. #include <SDL.h> #include <SDL_mixer.h> #include <stdio.h> #include <string> #include <iostream> using namespace std; int main( int argc, char* args ){ http://www.cyberforum.ru/cpp/thread1652358.html
[mingw] не видит <codecvt> C++
всем привет. есть библиотека, которая изначально разрабатывалась в msvc2013. к библиотеке есть требование - кросс-платформа, и отсутствие внешних зависимостей. то есть, нельзя подтягивать буст, и подобные тяжеловесные вещи. казалось бы - никаких левых зависимостей,
C++ Обертка над boost::lexical_cast для работы с unsigned типами
Пару дней назад выяснилось, что boost::lexical_cast не удовлетворяет нескольким требованиям в моей программе. boost::lexical_cast отказывается обрабатывать и выбрасывает исключение, если имеются пробелы в начале или в конце входной строки. Также для unsigned типов, отрицательные значения обрабатываются нормально, т.е., например, boost::lexical_cast<unsigned int>("-1") даст вполне валидное...
C++ Hex to Ascii http://www.cyberforum.ru/cpp/thread1650678.html
Всем привет! Работаю с АЦП, и ему надо отправить ascii код (55H 55H 00H 00H AAH). (в виде char будет (UU ª), просто так отправить не удалось) Попробовал отправить hex (55 55 00 00 AA), не принимает. Кто-нибудь может мне помочь вывести строчку "UU ª" хотя бы на командную строку?
C++ QtCipherSqlitePlugin sqlite3_rekey не шифрует Пытаюсь сменить пароль на БД. QSqlDriver *driver=myDatabase.driver(); QVariant handle=driver->handle(); Q_ASSERT_X(handle.isValid(), Q_FUNC_INFO, "Invalid handle of QSqlDriver"); if(handle.isValid() && qstrcmp(handle.typeName(), "sqlite3*")!=0) return false; sqlite3* db=*static_cast<sqlite3* const*>(handle.data()); if(db==NULL) подробнее

Показать сообщение отдельно
nikolay1982
93 / 93 / 38
Регистрация: 22.01.2014
Сообщений: 316
02.04.2016, 17:19
Можно получить количество байт на параметры с помощью исследавания lib файлов. Дело в том, что имена функций в либ файлах отличаются от тех имен, которые прописаны на экспорт в dll.
Пример:
Bash
1
objdump -t libuser32.a | tail
[ 2](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 0) 0x00000000 .bss
[ 3](sec 4)(fl 0x00)(ty 0)(scl 3) (nx 0) 0x00000000 .idata$7
[ 4](sec 5)(fl 0x00)(ty 0)(scl 3) (nx 0) 0x00000000 .idata$5
[ 5](sec 6)(fl 0x00)(ty 0)(scl 3) (nx 0) 0x00000000 .idata$4
[ 6](sec 7)(fl 0x00)(ty 0)(scl 3) (nx 0) 0x00000000 .idata$6
[ 7](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 _ActivateKeyboardLayout@8
[ 8](sec 5)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 __imp__ActivateKeyboardLayout@8
[ 9](sec 0)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 __head_libuser32_a
Да, lib файлы из-под mingw можно открыть с помощью 7z(Кстати lib файлы MSVC тоже). Это будет выглядеть как архив, в корне которого 1.txt содержит список функций.
Так вот, в декорации объектного имени и содержится "@8". Это как я понимаю и есть количество байт по параметры для stdcall. И только для stdcall, cdecl функции в таком "@" не нуждается, так как в функциях cdecl могут быть переменное количество параметров.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru