Я должен вызвать функцию во внешней библиотеке, чей тип и количество параметров и тип возвращаемого значения не известны. Как я могу вызвать эту функцию в C ++, используя dlsym?
РЕДАКТИРОВАТЬ: Как я могу вызвать функцию, используя dlsym (), если я получаю тип возвращаемого значения и тип данных параметров в виде строки.
Например: клиент отправляет имя функции, тип возвращаемого значения и типы параметров на сервер. Сервер динамически загружает соответствующие данные, используя dlopen (). Теперь, как я могу вызвать func, используя dlsym?
заранее спасибо
Если у тебя есть известное количество комбинаций параметров и их типов это может быть передано рассматриваемой функции, вы можете реализовать вызов в соответствии с этой информацией и во время выполнения проанализировать строку, содержащую типы и порядок передаваемых параметров, а затем перейти к реализации соответствующего вызова.
Если вы делаете заранее не знаю возможных типов и порядков параметров чтобы быть переданным рассматриваемой функции, нет возможности вызвать ее.
C не выполняет специальную компиляцию, поэтому параметры каждого вызова и их типы должны быть известны во время компиляции, то есть когда выполняется сборка исполняемого файла.
Как вызвать функцию, используя dlsym (), если я не знаю о типе возвращаемого значения и параметрах?
Тогда ты не сможешь. Если вы попытаетесь угадать их, то вызов функции через указатель на несовместимый тип функции приведет к неопределенному поведению.