![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Langaru |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 2.9.2009 Репутация: нет Всего: нет |
Всем доброго времени суток!
Недавно начал осваивать с++. Вроде все потихоньку получается, но появились некоторые проблемы, на которые никак не могу найти ответов. А именно: 1. Присоединение dll к программе. Имеется библиотека (okawsp5.dll), из которой надо вытащить некоторые функции (например функцию wspPST(t), и функция и параметр double). В любой литературе, включая ваш форум, указанно, что надо создавать заголовочный файл и прописывать кой-чего в самой длл. Собсно вопрос в следующем - как присоединить длл и вытащить из нее функцию в программу без изменения самой длл (написанна не мной и при открытии выдает непонятно что) и без файлов .lib,.def, либо что надо сделать - есть только длл файл и все? 2. Создание функции в отдельном файле. Все делал как в примерах - перерыл кучу литературы, но все равно фозникает одна и та же ошибка с линком. Все писалось в Dev-C++ 4.9.9.2. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
Langaru
В C++ нет методов для работы с DLL, это все делается по средствам операционной системы. API функции для Windows LoadLibrary и GetProcAddress |
|||
|
||||
| Langaru |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 2.9.2009 Репутация: нет Всего: нет |
На MSDNе и RSDNе тоже смотрел, но так и не понял, что именно надо делать. Можно поподробнее и, желательно, с разъяснениями что, где и как надо делать/писать?
Это сообщение отредактировал(а) Langaru - 3.9.2009, 13:24 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
||||
|
||||
| Langaru |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 2.9.2009 Репутация: нет Всего: нет |
Тут тоже был, но так же мало что понял...
собсно сама програмка, в которой используется функция wspPST(t)
.h фаил
.с файл выдается следующая ошибка - \main.cpp In file included from main.cpp \fordll.h `CALLBACK' does not name a type \main.cpp `HINSTANCE' does not name a type ..... \Makefile.win [Build Error] [main.o] Error 1 что не так и как это "что" надо поправить? |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
#include "windows.h" не забыл?
|
|||
|
||||
| Langaru |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 2.9.2009 Репутация: нет Всего: нет |
Забыл) Теперь ошибка следующего плана:
\main.o(.text+0x1ca) In function `main': [Linker error] undefined reference to `wspPST(double)' \main.o(.text+0x1ca) ld returned 1 exit status \Makefile.win [Build Error] [prob.exe] Error 1 Собсно при предыдущих попытка присоединения все заканчивалось именно на этой ошибке... |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Собственно правильно ругается - кто такая double wspPST(double t);? В dll у тебя лежит int wspPST(char *str), а для C++ это РАЗНЫЕ функции
|
|||
|
||||
| Langaru |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 2.9.2009 Репутация: нет Всего: нет |
double wspPST(double t) - непосредственно та функция, которую нужно вытащить из длл. Изменил, теперь ругается, что невозможно преобразовать double в char:
fordll.c cannot convert `double' to `const CHAR*' for argument `2' to `int MessageBoxA(HWND__*, const CHAR*, const CHAR*, UINT)' При изминении на MessageBox(NULL,"t","wspPST",MB_OK)- возвращаемся к старой ошибке... Что и где нужно исправить, чтобы вытаскивалась именно "double wspPST(double t)"??? |
|||
|
||||
| Andrey44 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
А ты уверен что у тебя есть в ДЛЛ ?
Добавлено через 4 минуты и 30 секунд
-------------------- ????? ??, ??????? ?????. |
||||
|
|||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Судя по твоим исходникам у тебя в dll функции double wspPST(double t) вообще нет, так что и вытащить ее оттуда не получится
А есть у тебя в dll функция int wspPST(char *str)
|
||||
|
|||||
| Langaru |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 2.9.2009 Репутация: нет Всего: нет |
Дело в том, что данная дллка распространяется бесплатно с лицензионной прогой и в описании сказанно, что пользоваться ей можно на халяву + приводится список функций.
То есть должна быть, но точно я удостоверится не могу, т.к. при открытии дллки отображается непонятно что:
собсно все в том же духе... Andrey44, спасибо помогло, но вот только при выполнении программы вылетает окошко с ошибкой и считается не верно... наверное все таки проблема в самой дллке...:( |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Дык, dll это бинарный файл, и открывать его надо не текстовым редактором, а например через objdump например (если уж у тебя Dev-C++ aka gcc) |
||||
|
|||||
| Langaru |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 2.9.2009 Репутация: нет Всего: нет |
Эээээ.... А если по русски и для "чайников"?) Просто присоединение данной библиотеки сняло бы множество проблем, поэтому очень надо... |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 2 Всего: 33 |
Langaru, с длл-кой поставляется .lib или .h файл?
Добавлено через 22 секунды дай ссылку на сайт где скачать это можно. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |