Здравствуйте, SSTU_user, Вы писали:
SST>Вопрос такой: есть dll в которой есть функция foo
SST>__declspec(dllexport)
SST>int foo(struct bar *s)
SST>{
SST> s = &some_struct; // some_struct объявлена ранее. по типу совпадает с s
SST> return 0;
SST>}
SST>Так вот в таком вызове этой функции:
SST>...// загружаем dll
SST>struct bar *t=NULL;
SST>FARPROC foo_proc;
SST>foo_proc = GetProcAddress(dll, "foo");
SST>foo_proc(t);
SST>t по-прежнему указывает на NULL. Но если у библиотечной функции foo параметр задать
SST>не как struct bar* , а , например, как int* или char*, то все происходит нормально.
SST>Может быть требуется как то особо указать способ передачи параметров функции? Где я ошибся?
Простите,а чего вы ожидаете. Вы локальной переменной s присваиваете какое-то значение, естественно его не видно снаружи функции, DLL тут не при чем. Если вы хотите вернуть наружу адрес, то должно быть написано примерно так:
int foo(struct bar **s)
{
*s = &some_struct;
return 0;
}
...
foo_proc(&t);