Как вызвать функцию, используя dlsym (), если я не знаю о типе возвращаемого значения и параметрах?

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

РЕДАКТИРОВАТЬ: Как я могу вызвать функцию, используя dlsym (), если я получаю тип возвращаемого значения и тип данных параметров в виде строки.

Например: клиент отправляет имя функции, тип возвращаемого значения и типы параметров на сервер. Сервер динамически загружает соответствующие данные, используя dlopen (). Теперь, как я могу вызвать func, используя dlsym?

заранее спасибо

1

Решение

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

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

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

2

Другие решения

Как вызвать функцию, используя dlsym (), если я не знаю о типе возвращаемого значения и параметрах?

Тогда ты не сможешь. Если вы попытаетесь угадать их, то вызов функции через указатель на несовместимый тип функции приведет к неопределенному поведению.

1

По вопросам рекламы [email protected]