Привет всем!
У меня есть библиотека длл, исходных кодов нет и не будет. Мне необходимо использовать буквально пару функций из нее. Там есть фабрика, которая подготавливает объект класса. Этот объект соединяется с удаленным сервером и при помощи функции GetSomething(sometype *something) получает информацию с сервера.
Что я делаю. установил wine на комп. ubuntu 11.04. на виндовой машине создал ехе который используя библиотеку получает нужную мне информацию и пишет в файл. сервер, логин, пароль, путь к файлу передаются этому ехе через командную строку. Создал приложение на линуксе, которое запускает ехе через вайн и потом читает файл и забирает информацию.
Все работает, но вопрос в следующем. Можно ли сделать функцию без ехе или как-то вшить код, т.е. не ждать пока создастся файл, иначе мое приложение на линуксе будет висеть и ждать.
| Код | char *current_dir = get_current_dir_name();
string s = "wine "; s += current_dir;//путь к ехе s += "/GetSomething.exe "; // сам ехе s += m_serverinformation; // заполнение данных о сервере s += current_dir; // путь к выходному файлу s += filename; // имя файла
system(s.c_str());//запускаем ехе под вайном
int cnt = 0; //счетчик FILE *stream = 0; while(stream==0) // цикл { stream = fopen(filename.c_str(),"r"); // пытаемся открыть файл, если ехе его создал - откроем if(stream) { int a; fscanf(stream,"%d",&a); // читаем инфу fclose(stream); // закрываем файл return a; // возвращаем данные } else { stream = 0; // продолжаем цикл } cnt++; // счетчик проходов sleep(1); // ждемс if(cnt>10) // слишком долго не ждем, возврат с ошибкой получения break; }
|
|