Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2011, 15:23   #11
NapalmRain
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 53
По умолчанию

Возможно это будет нагло с моей стороны. Но может кто-то может привести код
dll с какой-нибудь банальной функцией из цикла
Код:
double func(double x, double y)
{
double z;
z=x+y;
returne z;
}
и формы с одной кнопкой вызывающей эту функцию. Имея рабочий пример перед глазами, усложнить и усовершенствовать его будет на много проще, нежели латать моего кода-колеку.

Да не сочтут модераторы просьбу за холяву))

Последний раз редактировалось NapalmRain; 26.01.2011 в 15:24. Причина: ошибка
NapalmRain вне форума Ответить с цитированием
Старый 26.01.2011, 16:16   #12
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Чем примеры из МСДН не устроили, ссылку то я давал....
p51x вне форума Ответить с цитированием
Старый 26.01.2011, 16:28   #13
NapalmRain
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 53
По умолчанию

Те примеры не смогли полноценно помочь мне по двум причинам: я е очень хорошо владею английским, что так же затрудняем возможность использования справки, и там не конкретный пример уже готового кода. прочитав который понимаешь, что откуда берётся, а описаное самой функции и её синтаксиса.
Я не уверен даже в том, что моя dll работоспособна и не имею возможности проверить это, поэтому и прошу привести в пример работающий код, желательно самый простой и без использования lib и заголовочных файлов, чтоб было как можно проще разобраться и понять, где же я накосячил.
NapalmRain вне форума Ответить с цитированием
Старый 26.01.2011, 17:55   #14
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

NapalmRain если такое имя функций отключите их декодирование. Как это сделать нужно читать в документации своего компилятора.
profi вне форума Ответить с цитированием
Старый 26.01.2011, 18:37   #15
NapalmRain
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 53
По умолчанию

с кодировкой разобрался и теперь моя функция line носит имя _line

однако тот вариант вызова, который я использую по прежнему говорит мне
Код:
[C++ Error] Unit1.cpp(25): E2314 Call of nonfunction
NapalmRain вне форума Ответить с цитированием
Старый 26.01.2011, 18:50   #16
NapalmRain
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 53
По умолчанию

добавил указатель функции
вот таким образом
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
typedef double (__stdcall *LINE)(double x);
HMODULE Lib;
LPCSTR line;
double b11;
Lib=LoadLibrary("dll/Project1.dll");
line=(LINE*)GetProcAddress(Lib,"_line");
b11=line(5);
}
теперь на строку
line=(LINE*)GetProcAddress(Lib,"_li ne");

он выдаёт ошибку
Код:
[C++ Error] Unit1.cpp(25): E2034 Cannot convert 'double (__stdcall * *)(double)' to 'const char *'
и при этом [C++ Error] Unit1.cpp(26): E2314 Call of nonfunction никуда не делась...
NapalmRain вне форума Ответить с цитированием
Старый 26.01.2011, 19:00   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
и там не конкретный пример уже готового кода
Ой,у меня наверное заговор с мелкософтом - он и пример мне показал, и ссылки дал, где еще посмотреть полные примеры
p51x вне форума Ответить с цитированием
Старый 26.01.2011, 19:02   #18
NapalmRain
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 53
По умолчанию

Видимо Вам было проще благодаря знанию английского на должном уровне, а мне вот тут прям стена... С техническим английским просто никак.
NapalmRain вне форума Ответить с цитированием
Старый 26.01.2011, 20:27   #19
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от NapalmRain Посмотреть сообщение
Код:
LPCSTR line;
теперь на строку
line=(LINE*)GetProcAddress(Lib,"_li ne");

он выдаёт ошибку
Так ведь line нужно объявлять как LINE, а не как LPCSTR. И приводить не к LINE*, а к LINE, так как это уже указатель
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Список функций .dll Johnson Общие вопросы Delphi 2 21.12.2010 17:10
Переадресация функций DLL Bad-XxX Общие вопросы Delphi 0 13.10.2010 01:11
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
Несколько функций в DLL Alex Cones Общие вопросы Delphi 7 23.05.2009 22:36
Получение функций из DLL NITRON Общие вопросы Delphi 8 12.09.2007 17:32