Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> И снова dll, никак не могу подгрузить 
:(
    Опции темы
xvr
Дата 3.9.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Langaru @ 3.9.2009,  15:08)
Цитата

Дык, dll это бинарный файл, и открывать его надо не текстовым редактором, а например через objdump например (если уж у тебя Dev-C++ aka gcc)

Эээээ.... А если по русски и для "чайников"?) 

Сложно сказать, что не так, не видя ни самой dll ни ее .h файла  smile Программа хоть слинковалась? (т.е. exe'ник получился?)

PM MAIL   Вверх
andrew_121
Дата 3.9.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33



Вот прототипы: http://twt.mpei.ac.ru/orlov/watersteampro/....5/funclist.htm
мышкой наведи на имя функции, аргументы, и узнаешь типы. подключай динамически.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Langaru
Дата 3.9.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Цитата

дай ссылку на сайт где скачать это можно. 

http://twt.mpei.ac.ru/orlov/watersteampro/ru/
Это программа, в описании которой написанно, что весь рассчет идет через эту библиотеку, т.е. функции содержатся именно в этом файле и можно юзать кто хочет.
Цитата

с длл-кой поставляется .lib или .h файл?

нет. в указанном месте windows/system32/ сидит только она и ссылки только на нее. Либо я чего-то недопонял.
PM MAIL   Вверх
andrew_121
Дата 3.9.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33





--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Langaru
Дата 3.9.2009, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Цитата

мышкой наведи на имя функции, аргументы, и узнаешь типы. подключай динамически. 

Это я все в курсе - собсно все типы - double. Динамически - это как? Пример с днанной функцией можно?
PM MAIL   Вверх
andrew_121
Дата 3.9.2009, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33



Цитата(Langaru @  3.9.2009,  15:20 Найти цитируемый пост)
нет. в указанном месте windows/system32/ сидит только она и ссылки только на нее. Либо я чего-то недопонял. 

Ну и х* с ними. Прототипы я показал. Подключай динамически.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Langaru
Дата 3.9.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Цитата

Сложно сказать, что не так, не видя ни самой dll ни ее .h файла   Программа хоть слинковалась? (т.е. exe'ник получился?)

А мне то уж тем более. Я не понял как именно можно посмотреть данную длл в нормальном виде. Программа слинковалась, ехешник получился, только вылетает ошибка (от винды с сообщением "Т") и выводится значение "1" вместо нужного.

Добавлено через 5 минут и 54 секунды
Цитата

Ну и х* с ними. Прототипы я показал. Подключай динамически.

Бодрый ответ) Их я знаю почти наизусть, т.к. переодически использую в маткаде. Хотел полностью автоматизировать расчет и сделать это на с++. До это писал на фортране, захотелось попробовать на си. Попробую. *ушел читать мат.часть и зубрить азбуку*
Спасибо всем, кто откликнулся. Если не получится, надеюсь, можно будет Вас еще "помучить" своими "глупыми" вопросами) 
PM MAIL   Вверх
andrew_121
Дата 3.9.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33



Вот. Работает. Но при вызове функции появляется окошко регистрации.
Код

#include <iostream>
#include <windows.h>

/***************************************************************************/

typedef double (*pfn_wspPST)(double);

int main(int, const char**) {
    pfn_wspPST wspPST;
    double dKelvin,dCelsius,dFar; 
    
    HMODULE dll = LoadLibrary("okawsp6.dll");
    if ( !dll ) {
        std::cerr << "Can`t load library!" << std::endl;
        return 1;
    }
    
    wspPST = (pfn_wspPST)GetProcAddress(dll, "wspPST");
    if ( !wspPST ) {
        std::cerr << "Not wspPST in the library!" << std::endl;
        FreeLibrary(dll);
        return 1;
    }

    std::cout << "Inter tempreche \n";
    std::cin >> dCelsius;
    dFar = dCelsius*(212-32)/100+32;
    dKelvin = dCelsius+273.15;
    std::cout << dFar << "F \n" << dKelvin << "K \n";
    
    double dP=wspPST(dKelvin);
    std::cout<<dP<<"Pa \n";

    system("PAUSE");
    
    FreeLibrary(dll);
    
    return 0;
}

/***************************************************************************/




--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
xvr
Дата 3.9.2009, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Langaru @ 3.9.2009,  15:28)
Цитата

Сложно сказать, что не так, не видя ни самой dll ни ее .h файла   Программа хоть слинковалась? (т.е. exe'ник получился?)

А мне то уж тем более. 

Но у тебя то по крайней мере dll есть  smile 
Цитата

Я не понял как именно можно посмотреть данную длл в нормальном виде. 
Давай dll, посмотрю
Цитата

Программа слинковалась, ехешник получился, только вылетает ошибка (от винды с сообщением "Т") и выводится значение "1" вместо нужного.
И сорцы программы давай, что то там не так  smile 

PM MAIL   Вверх
andrew_121
Дата 3.9.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33



Цитата(xvr @  3.9.2009,  20:57 Найти цитируемый пост)
Давай dll, посмотрю

Цитата(Langaru @  3.9.2009,  15:20 Найти цитируемый пост)
http://twt.mpei.ac.ru/orlov/watersteampro/ru/



Цитата(xvr @  3.9.2009,  20:57 Найти цитируемый пост)
И сорцы программы давай, что то там не так

http://forum.vingrad.ru/index.php?showtopi...t&p=1956929

п.с.
у меня работает. Вот только окошко регистрации появляется smile


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
xvr
Дата 4.9.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(andrew_121 @ 3.9.2009,  21:35)
Цитата(xvr @  3.9.2009,  20:57 Найти цитируемый пост)
Давай dll, посмотрю

Цитата(Langaru @  3.9.2009,  15:20 Найти цитируемый пост)
http://twt.mpei.ac.ru/orlov/watersteampro/ru/


Не хочу ставить всю эту байду только для того, что бы выдернуть оттуда dll. У топикстартера она и так должна быть - пусть прикрепит к сообщению

Цитата

Цитата(xvr @  3.9.2009,  20:57 Найти цитируемый пост)
И сорцы программы давай, что то там не так

http://forum.vingrad.ru/index.php?showtopi...t&p=1956929
Меня интересуют ЕГО сорцы, а не твои - у тебя то оно работает  smile 

PM MAIL   Вверх
andrew_121
Дата 4.9.2009, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33



xvr, вот:


Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  okawsp6.dll 764,00 Kb


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Langaru
Дата 4.9.2009, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



andrew_121, спасибо огромное - все четко работает. Только файл нужно брать okawsp5.dll - это для старой программы, которая стоит зарегенная, 6й - для новой, еще без лицензии.
Попробовал другие функции - все пашет. Только вот возник такой вопрос: при вызове функций надо громодить постоянно
Код

typedef double (*pfn_wspPST)(double);
typedef double (*pfn_wspVPT)(double,double);
typedef double (*pfn_wspHPT)(double,double);

Код

wspPST = (pfn_wspPST)GetProcAddress(dll, "wspPST");
wspVPT = (pfn_wspVPT)GetProcAddress(dll, "wspVPT");
wspHPT = (pfn_wspHPT)GetProcAddress(dll, "wspHPT");

или же это можно как-то компактно упаковать в другой файл?
PM MAIL   Вверх
andrew_121
Дата 4.9.2009, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 2
Всего: 33



Цитата(Langaru @  4.9.2009,  10:27 Найти цитируемый пост)
или же это можно как-то компактно упаковать в другой файл? 

обычно так и делается. пишешь структуру. в ней объявляешь переменные типа указателей на функции.
что-то типа:
Код

typedef double (*pfn_wspPST)(double);
typedef double (*pfn_wspVPT)(double,double);
typedef double (*pfn_wspHPT)(double,double);

struct Functions {
   HMODULE dll;
   pfn_wspPST wspPST;
   pfn_wspVPT wspVPT;
   pfn_wspHPT wspHPT;
};


еще функцию которая будет подгружать длл-ку и инициализировать переменные.
к примеру:
Код

bool init(Functions* f) {
   f->dll = LoadLibrary("...");
   if ( !f->dll ) return false;
   f->wspPST = (pfn_wspPST)GetProcAddress(f->dll, "wspPST");
   f->wspVPT = (pfn_wspVPT)GetProcAddress(f->dll, "wspVPT");
   f->wspHPT = (pfn_wspHPT)GetProcAddress(f->dll, "wspHPT");
}

void free(Functions* f) {
   if ( f->dll ) {
      FreeLibrary(f->dll);
   }
}

тогда доступ к функциям будет более осмысленным:
Код

int main(int, const char**) {
   Functions func;
   if ( !init(&func) ) {
      std::cerr << "Error!" << std::endl;
      return 1;
   }

   double result = func.wspPST(1.33);

   free(&func);
   return 0;
}


что-то типа этого smile

Это сообщение отредактировал(а) andrew_121 - 4.9.2009, 11:37


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Langaru
Дата 4.9.2009, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Пишет, что Function undeclared. Как ее опредилить? И еще что все вытаскиваемые функции не объявлены - их прототипами в начале объявлять?
С функциями и до этого были проблемы. Пытался написать функцию в отдельном файле, ругался на ее необъявленность и на пространство имен - воспринимал только main.

Это сообщение отредактировал(а) Langaru - 4.9.2009, 12:07
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1306 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.