powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / помогите с вызовом функции из DLL (среда Builder, Rad Studio)
25 сообщений из 53, страница 1 из 3
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450094
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на всем известном примере собрал подключение к DLL. Там есть функция "Connect( "строка подключения" )".
Как вызвать теперь эту функцию?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
// определяем тип "указатель на функцию"
	typedef void __cdecl (*dll_func)(const int A, const int B);

	dll_func pShowSum = NULL;

	String Worda = "plcommpro.dll";
	wchar_t* plcommpro = Worda.w_str();
	hDLL = LoadLibrary(plcommpro);
	if (!hDLL) {
	  ShowMessage("Невозможно загрузить plcommpro.dll");
	  return;
	}
	// пытаемся найти в таблице экспорта необходимую нам функцию
	pShowSum = (dll_func)GetProcAddress(hDLL, "Connect"); // обратите внимание на название функции (объяснение будет ниже)
	if (!pShowSum)
	{
		ShowMessage("Невозможно найти функцию ShowSum");
		return;
	}
	dll_func Connect = NULL;
//	pShowSum(3,2);
	String params = "protocol=TCP,ipaddress=192.168.12.154,port=4370,timeout=2000,passwd=";
	int h = Connect(params);


Не проходит (естественно) int h = Connect(params);
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450095
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
... добавил

Код: plaintext
1.
2.
3.
4.
5.
        typedef void __cdecl (*Connectos)(String param);
	Connectos Connect = NULL;
//	pShowSum(3,2);
	String params = "protocol=TCP,ipaddress=192.168.12.154,port=4370,timeout=2000,passwd=";
	int h = Connect(params);
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450099
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

Что-то странное ты делаешь.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        typedef void __cdecl (*Connectos)(String param);
	Connectos Connect = NULL;

       Connect = (dll_func)GetProcAddress(hDLL, "Connect");
	
       if (!pShowSum)
	{
		ShowMessage("Где мой Connect()?!!!");
		return;
	}

	String params = "protocol=TCP,ipaddress=192.168.12.154,port=4370,timeout=2000,passwd=";
	int h = Connect(params);


И еще - там в параметрах точно String? Может лучше PChar?
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450103
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

Поправка:

if (!Connect)
{
.....
}
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450108
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,

так у меня


Код: plaintext
1.
2.
3.
4.
5.
6.
        .....
        typedef void __cdecl (*Connectos)(String param);
	Connectos Connect = NULL;
//	pShowSum(3,2);
	const char *Parameters = "protocol=TCP,ipaddress=192.168.12.154,port=4370,timeout=2000,passwd=";
	int h = Connect(Parameters);
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450109
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMasterDarkMaster,

Поправка:

if (!Connect)
{
.....
}


не видит функцию Connect, хотя в проверке есть, видится.
ругается на последнюю строку.
что не так?
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450110
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[bcc32 Error] Main.cpp(41): E2468 Value of type void is not allowed
Full parser context
Main.cpp(16): parsing: _fastcall TForm1::TForm1(TComponent *)
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450125
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
Код: plaintext
1.
2.
3.
4.
dll_func Connect = NULL;
// pShowSum(3,2);
	String params = "protocol=TCP,ipaddress=192.168.12.154,port=4370,timeout=2000,passwd=";
	int h = Connect(params);

Не понимаю, на каком основании ты надеешься, что эта каша хоть как-то заработает.
По сути ты зануляешь объявленный указатель на функцию Connect и затем пытаешься вызвать функцию по этому адресу (null'у).
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450126
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

А адрес на фцию Connect ты получил в переменную pShowSum
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450133
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73так у меня
Полный бред у тебя. Функция, экспортированная из DLL, не может получать класс, да ещё и по
значению.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450174
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на сейчас проблема с тем, получаю ошибку в компиляторе

Код: plaintext
1.
2.
3.
[bcc32 Error] Main.cpp(40): E2268 Call to undefined function 'Connect'
  Full parser context
    Main.cpp(16): parsing:  _fastcall TForm1::TForm1(TComponent *)



надо не говорить, что я делаю не так, что надо сделать, что бы было так
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450175
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это работает

//
Код: plaintext
1.
pShowSum(3,2);



это не работает (не компилится)

Код: plaintext
1.
int h = Connect(Parameters);
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450181
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73...

надо не говорить, что я делаю не так, что надо сделать, что бы было так
То есть, разобраться ты не желаешь, желаешь просто, чтобы за тебя сделали.

А зачем тебе помогать тогда?
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450183
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73на сейчас проблема с тем, получаю ошибку в компилятореС ошибками в компиляторе обращайтесь в QC Embarcadero)
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450195
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,

поправка к чему?

до последней строки все работает. проверял.
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450212
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

ну смотри. Ты уже получил (судя по твоим словам - успешно!) адрес функции Connect:
Код: plaintext
1.
2.
3.
	dll_func pShowSum = NULL;
...
	pShowSum = (dll_func)GetProcAddress(hDLL, "Connect"); // обратите внимание на <...>


Дальше ты почему-то не используешь этот адрес, а делаешь что-то чудовищное:

Код: plaintext
1.
2.
3.
	dll_func Connect = NULL;
...
	int h = Connect(params);


Ну, напрягись же чуть-чуть.
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450266
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД...
Ну, напрягись же чуть-чуть.

но при этом у него и функция объявлена как

typedef void __cdecl (*Connectos)(String param);

а вызывается как

const char *Parameters = ...
int h = Connect(Parameters);

и совершенно закономерная ошибка

Value of type void is not allowed

ему не понятно.

P.S.
Когда я в третьем классе школы в диктанте по русскому языку в одном слове сделал 7 ошибок из 13 возможных букв, учитель сразу все понял и проблем на его уроках у меня больше не было )))) С тех пор предпочитаю языки типа С, Pascal, Java etc....

Т.ч. напрягаться автору я бы не советовал. Наоборот: расслабиться, деинсталировать Builder и все прочие среды разработки и больше не мучить клавиатуру, процессор и наши мозги. А удовольствия от жизни получать более традиционными способами
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450279
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMizer73так у меня
Полный бред у тебя. Функция, экспортированная из DLL, не может получать класс, да ещё и по
значению.
Если с обоих сторон один компилятор с++/либа, то может.
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450293
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

идите, умничать, нах, уважаемый. и очки с собой возьмите.
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450294
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

когда никто не знает, как правильно, начинаются переборы возможностей под умным соусом.
на простой вопрос, куча потерянного времени.
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450299
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При чем тут умничать

1) Вы начинаете писать на С, даже не подумав подумать, что значат слова
void и NULL

Это, где-то 1-ая или, в худшем случае, 2-а глава в любой книжке по C

2) Ваш код, это какой-то копи-паст случайных строк из разных примеров

3) совершенно не понятно, чего Вы хотите добиться. Зачем Вам динамическая загрузка библиотеки, когда можно просто implib воспользоваться. Что это за библиотека. Какие у нее параметры и какой calling conversion.

4) ошибки которые Вы допускаете, заставляют предположить, что Вы вообще в первый раз язык C видите. Если бы это был вопрос от девочки-студентки, то можно было бы списать это на цвет волос.

Но с учетом того, что на форуме Вы зарегистрированы аж уже лет 5 и Вы уверяли, что "implib уже использовали" - я не знаю, как это воспринимать на трезвую голову.

IMHO & AFAIK
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450300
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

я зарегистрирован 5 лет, во многих формах. написал кучу приложений по сопровождению производства.
много сложных вопросов по с и по sql решил тут.
я пишу, что я не понимаю вопросов dll. в данный момент мне попался SDK без заголовочных файлов, и я решаю этот вопрос, как могу, как решал. по сему задаю вопросы.
для меня это вопрос - копеечный, всего лишь вопрос решить проблему работы с библиотекой, какая есть. не решу - буду писать в другой среде.
но хотелось бы в этой.
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450303
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73много сложных вопросов по с и по sql решил тутТы вызывал функцию по указателю, равному NULL, я об этом тебе написал в одном из первых ответов в теме. Не решение?
Функция описана, как "возвращающая" void, а ты присваиваешь переменной h ее "результат". Об этом тебе сказали чуть позже. Не решение?

Ты всего этого не понимаешь и в то же время "решил много вопросов по с"? Смешно.
Еще и грубишь при этом.
Писать за тебя код никто тут не будет, а после хамства и просто помогать даже.
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450304
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73не решу - буду писать в другой средеДругая среда тут не поможет, как и другой язык.
...
Рейтинг: 0 / 0
помогите с вызовом функции из DLL (среда Builder, Rad Studio)
    #39450306
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock,
SDK идет под c#. на питоне примеры есть.
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / помогите с вызовом функции из DLL (среда Builder, Rad Studio)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]