Здравствуйте, kankan, Вы писали:
K>Вы меня неправильно поняли.
K>Код, который я привел, работает с кучей функций, и мне не надо их знать — это типа "универсальный" враппер на ф-цию. С его помощью могут вызываются например ф-ции, загруженные GetProcAddress().
K>Что конкретно вызывает пользователь этого враппера — я хз, у меня есть только указатель на вызываемую ф-цию и ее параметры.
K>Проблема в том как вызвать эту функцию и передать ей все эти параметры в x64.
теперь понял, прошу прощения. тогда похоже только через хард кодинг, брать в руки ассемблер, разбираться как передаются параметры (это хорошо если они однотипные, если нет, то будет сложнее — целочисленные и числа с плавающей запятой передаются в разных регистрах). и ваять код, либо в асме, линковать obj, либо представлять в байткоде в С
еще можно сделать такой тупняк (если количество параметров не огромно):
void Fn1(int i, int i2)
{
printf("i=%d,i2=%d\n", i, i2);
}
void Fn2(int i)
{
printf("i=%d\n", i);
}
typedef void (*fn_myfunc_t)(...);
fn_myfunc_t fn = (fn_myfunc_t)&Fn1;
fn(123, 456);
fn_myfunc_t fn1 = (fn_myfunc_t)&Fn2;
fn(123);
то бишь для каждого конкретного кол-ва параметров делать соответствующий вызов (по крайней мере работает), хотя может как то и разом туда все передать, в массиве например, у меня не получилось