Пожалуйста, имейте в виду, что виджет Google Maps является предварительным просмотром разработчика, в версии 0.2. Многие вещи и способности, вероятно, изменятся в ближайшие месяцы.
Возможно выяснить подпись функции C путем анализа beginnig ее дизассемблирования. Аргументы функции будут на стеке, и функция сделает, некоторые "появляются" для чтения их в обратном порядке. Вы не найдете имена аргумента, но необходимо смочь узнать их число и типы. Вещи могут стать более трудными с возвращаемым значением - это может быть через регистр 'eax', или через специальный указатель передал функции как последний псевдоаргумент (на вершине стека).
Если функцией является C++ один, Вы можете получать функциональную подпись из скорректированного имени. Walker зависимости является одним инструментом, который сделает это для Вас. Однако, если DLL был создан со связью C (Зависимость, Walker скажет Вам это), затем Вам не повезло.
Язык C++ ничего не знает о dlls.
Это находится в Windows? Один путь был бы к:
depends.exe
поставленный с (Visual Studio)LoadLibrary()
для получения загружают этот dll (быть осторожным относительно пути)GetProcAddress()
для получения указателя на функцию, Вы хотите звонитьFreeLibrary()
выпускать дескрипторBTW: Этот метод также обычно упоминается как динамическое подключение во время выполнения в противоположность динамическому подключению времени компиляции, где Вы компилируете свои источники со связанным
lib
файл.
Там существует, некоторый подобный механизм для *отклоняет с dlopen
, но моя память начинает перестать работать после этого. Что-то позвонившее objdump
или nm
должны запустить Вас с осмотра функции (функций).
Поскольку Вы нашли, список экспорта в DLL только хранит имена, не подписи. Если Ваш DLL экспортирует функции C, необходимо будет, вероятно, демонтировать и перепроектировать функции для определения сигнатур методов. Однако C++ кодирует сигнатуру метода на имя экспорта. Этот процесс объединения имени метода и подписи называют "искажением имени". Этот вопрос Stackoverflow имеет ссылку для определения сигнатуры метода с искаженного имени экспорта.
Попробуйте свободную "Зависимость Walker" (иначе "зависит"), утилита. Опция "Undecorate C ++ Functions" должна определить подпись метода C++.
Если Вы действительно знаете или сильно подозреваете, что функция там, можно динамично загрузить DLL loadLibrary и получить указатель на функцию с getProcAddress. См. MSDN
Обратите внимание, что это - ручной, динамический способ загрузить библиотеку; необходимо будет все еще знать, что корректная функциональная подпись отображается на указатель функции, для использования его. AFAIK там не является никаким способом использовать dll в возможности времени загрузки и использовать функции без заголовочного файла.
Вызывание невнешних функций является отличным способом иметь Ваше повреждение программы каждый раз, когда третья сторона DLL обновляется.
Тем не менее undname утилита может также быть полезной.