2010-07-12 3 views
6

Итак, я могу использовать dumpbin.exe/exports library.dll, чтобы найти все методы в dll.Поиск аргументов, которые идут с методами в C++ dll

... но как мне узнать, какие аргументы нужно переходить в них? Без заголовка, конечно.

+0

Аналогичный вопрос: [Функция вызова в dll C++ без заголовка] (http://stackoverflow.com/questions/554551/call-function-in-c-dll-without-header) – Amro

ответ

8

Для обычного экспорта в стиле C (например, DLL Windows API): вы не можете. Эта информация не сохраняется в DLL и неизбежно теряется после компиляции (если у вас нет заголовков или символов отладки).

С другой стороны, экспорт C++ хранит свою подпись как часть имени функции управления, и вы можете просматривать их с помощью Dependency Walker или аналогичных инструментов или разворачивать их вручную, используя the UNDNAME tool или DUMPBIN's /SYMBOLS option.

+0

Ahh sweet. Благодарю. Но ... как я расшифрую имена? Например, эти имена методов: ? GetCpuSpeed ​​@@ YAHXZ ? GetCpuSpeed ​​@ CDLL1 @@ QAEHXZ Любые идеи? – Presidenten

+0

По крайней мере, зависание Уокер может разбить имена через некоторую запись в меню. Подробную информацию см. В разделе «Внешние ссылки» http://en.wikipedia.org/wiki/Name_mangling – Philipp

+0

Другие ссылки: http://msdn.microsoft.com/en-us/library/5x49w699.aspx http: //msdn.microsoft.com/en-us/library/b06ww5dd.aspx – Philipp