Имеется DLL написанная на С++. В ней две функции, например void Message() и short Add(short, short). Описаны они таким образом:
extern "C" __declspec(dllexport) void Message()
{
MessageBox(NULL, "Message", "Title", MB_OK;
}
extern "C" __declspec(dllexport) short Add(short x, short y)
{
return x+y;
}
Дело вот в чем. Достучаться до первой функции получается без проблем, при попытке обратиться ко второй вылетает сообщение о неправильном формате DLL (функция в Basic описывается соответственно с Integer параметрами, т.к в С++ short занимает 2 байта. Здесь речь идет о VC++ 6.0). Как я понял, ошибка происходит при передаче в DLL параметров по значению. Пробовал передавать ByRef (меняя соответственно short на short*), все то же самое. Объясните плз, в чем дело. Может в DLL описать функции по другому, либо из Basic-а обращаться к ним как-то по особому?