Сколько у тебя функций Add? Если больше одной, то может быть, приблизительно
Код: Выделить всё
HINSTANCE hModule;
int (*pFunction)(int, int);
(FARPROC &)pFunction;
hModule=::LoadLibrary("MyDLL");
if ( hModule != NULL )
{
pFunction = GetProcAddress(hModule, "iiAdd");
}
else
{
pFunction=NULL;
}
if (pFunction != NULL)
{
textBox1->Text = Convert::ToString(pFunction(1,1));
}
else
{
textBox1->Text = Convert::ToString("err");
}
Я не уверен в написании имени перегруженной функции и в том, зависит ли вообще перегрузка имени от числа функиций с таким именем или только от самой возможности создавать более одной. Неуверен, в этом ли вообще глюк, или в чём-то другом. Не знаю, можно ли в товоей библиотеке вообще пергружать функции. Но другого объяснения у меня нет. Попробуй откомпилить в ассемблер тестовую прогу с такого файла:
Код: Выделить всё
int Add(int x, int y)
{
return x+y;
}
int Add(float x, float y)
{
return (int)(x+y)
}
int Main ()
{
int x=1;
int y=2;
int z;
int t;
float w=2.1;
float q=3.2;
z=Add(x,y);
t=Add(w,q);
}
и найди в полученном файле имя, содержащее ii и Add - это будет точное имя перегруженной функции. Я GetProcAddressом не пользуюсяь, а предпочитаю бибиотеки импорта, то есть специальные статические либы с адресами функций динамических библиотек. Ко всем функцциям библиотек я обращаюсь так, как если бы они были функциями самой прилады, а не биьблиотек. Кстати, зачем вообще понадобилось стандартный оператор упаковывать в оболочечную функцию? разве нельзя писать просто x+y и не мучиться? А если тип слагаемых вдруг будет не стандратный, а какой-нибудь TComlex, то перегрузи оператор сложеия и поинтересуйся, может ли библиотека поставлять операторы-члены класса, или необходимо инкладить все такие операторы непосредственно в приладу. Функции же создавай для тех случаев, для которых операторы не предусмотрены, или для суммы, произведения или конкатенации всех элементов массива.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".