Здравствуйте. Столкнулся с такой проблемой. Есть Dll "A". Если писать приложение с помощью ее функций приложение работает исправно. Но мне нужно часть функций из Dll "A" "завернуть" в свои функции и скомпилировать Dll "B".
Так вот если теперь написать приложение с вызовом этой функции оно пеестает работать корректно.
Здравствуйте, Zhbanito, Вы писали:
Z>Здравствуйте. Столкнулся с такой проблемой. Есть Dll "A". Если писать приложение с помощью ее функций приложение работает исправно. Но мне нужно часть функций из Dll "A" "завернуть" в свои функции и скомпилировать Dll "B". Z>Так вот если теперь написать приложение с вызовом этой функции оно пеестает работать корректно.
Z>Напр.
Z>A.dll Z>Функции: Z>int summ(a,b) Z>char* funct(int)
Z>B.dll Z>char* function(a,b) Z>{ Z> return funct(summ(a,b)); Z>}
Z>Так вот если в программе сделать с помощью библиотеки A.dll
Z>int main() Z>{ Z> printf(funct(summ(a,b))); Z>} Z>Все прекрасно.
Z>А если с помощью B.dll
Z>int main() Z>{ Z> printf(function(a,b)); Z>}
Z>Не выходит...
А что не работает и не выходит? Телепатия мне отказала.
"To protect people you must slay people. To let people live you must let people die. This is the true teaching of the sword."
-Seijuro Hiko, "Rurouni Kensin"
Здравствуйте, Zhbanito, Вы писали:
Z>Здравствуйте. Столкнулся с такой проблемой. Есть Dll "A". Если писать приложение с помощью ее функций приложение работает исправно. Но мне нужно часть функций из Dll "A" "завернуть" в свои функции и скомпилировать Dll "B". Z>Так вот если теперь написать приложение с вызовом этой функции оно пеестает работать корректно.
Z>Не выходит...
Как начинающий телепат спрошу: с конвенциями вызова всё нормально? Везде __stdcall?
А вообще — код в студию. Из того, что вы уже сказали следует что всё должно работать.
Код компилируется и сервер подтвеждает что коннект происходит.
А теперь если создать библиотеку B.dll которая использует исходную и сделать функцию:
extern "C"
{
__declspec( dllexport ) int __stdcall Connect()
{
ACE_SOCK_Stream sock;
ACE_SOCK_Connector connector;
ACE_INET_Addr addr;
if (addr.set(13000,"127.0.0.1")==-1)
return -1;
if(connector.connect(sock, addr)==-1)
return -2;
return 1;
}
}
А в главную программу подключить B.dll и снабдить ее [главную программу] таким вот:
int main(int argc, char *argv[])
{
if (Connect()<0)
printf("F@ck");
for(;);
return 1;
}
То на экране высвечивается F@ck, а сервер не регестрирует попытку подключения...