Получите подписи экспортируемых функций в DLL

В вашей таблице стилей добавить:

@media print
{    
    .no-print, .no-print *
    {
        display: none !important;
    }
}

Затем добавьте class='no-print' (или добавьте класс no-print в существующий оператор класса) в свой HTML, который вы не хотите отображать в печатной версии, такой как ваша кнопка. Я получил это, чтобы работать с noPrint вместо noprint (нижний регистр).

19
задан huseyint 22 December 2008 в 12:34
поделиться

3 ответа

DLLs не хранят подписи функций, которые они экспортируют. Другие ответы упомянули C++, и когда функция C++ будет экспортирована как C++ , затем имя будет действительно искажено. Demangle это со схемой искажения правильного компилятора, и у Вас будет подпись. Но большинство DLLs не экспортирует функции C++ с помощью своих имен C++. Вместо этого функции, которые DLL принимает решение экспортировать, экспортируются с помощью имен C-стиля, поэтому даже если DLL был записан в C++, экспортируемые функции все еще не будут иметь никакой информации о подписи.

у Вас нет заголовка? Большинство поставщиков включает такую вещь в свой SDKs. Если Вы не добирались один, то жалуетесь поставщику. Если Вы, как предполагалось, не добирались один, то, возможно, Вы идете о своей задаче неправильным путем; действительно ли Вы уверены, что Вы, как предполагается, используете тот DLL непосредственно?

, Если у Вас нет заголовочного файла, затем Вы могли бы также спросить себя, разрешают ли Вам действительно, по закону, использовать DLL в Вашей программе так или иначе. Если это - просто произвольный DLL, Вы нашли в своей системе, то, даже если можно написать код для него, Вам, вероятно, не разрешают перераспределить его при поставке программы.

20
ответ дан 30 November 2019 в 04:21
поделиться

Для функций C эта информация не хранится в DLL вообще. Единственная вещь, которую я могу предложить, состоит в том, чтобы демонтировать функцию и взгляд на то, как это взаимодействует с переменными на стеке, и затем попытайтесь определить подпись.

Удачи!

4
ответ дан 30 November 2019 в 04:21
поделиться

В C++ функциональные подписи" , исказил " на имя зависимым от компилятора способом. Этого не происходит в C. Так, если у Вас будут функции C в Вашем DLL, то Вы будете видеть неискаженные имена. Если это будет C++ один, то Вы будете видеть искаженные.

C++ нужны скорректированные имена, чтобы позволить компоновщику разрешать перегруженные функции с различными подписями.

я не думаю, что существует любой способ для Вас получить функциональные подписи от "C" DLL. Они просто не присутствуют.

3
ответ дан 30 November 2019 в 04:21
поделиться