Ошибка (Linking DLL)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Ошибка (Linking DLL)

Сообщение CORBA » 18.10.2005 (Вт) 22:25

написал dll на Delphi и решил опробывать её в VB, но чё то VB она не пошла хотя в делфях длл'ка работает на ура. Вроде как библиотеки длл должны быть совместимы с любой визуальной (и не только) средой или я не прав?

ЗЫ
Программа выдаёт следующую ошибку:

Run-time Error '49';
Bad calling convention

А вот код вызова функции:




Код: Выделить всё
Private Declare Function Sum Lib "Project2.dll" (X As Integer, Y As Integer) As Integer



Private Sub Command1_Click()
Label1.Caption = CStr(Sum(CInt(Text1.Text), CInt(Text2.Text)))

End Sub
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 18.10.2005 (Вт) 22:29

Поиск по форуму "Bad calling convention". Все слова. ничего не даёт?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Re: Ошибка (Linking DLL)

Сообщение GSerg » 18.10.2005 (Вт) 22:31

CORBA писал(а):Вроде как библиотеки длл должны быть совместимы с любой визуальной (и не только) средой или я не прав?

Или ты не прав.

CORBA писал(а):Run-time Error '49';
Bad calling convention

Не сомневаюсь.

CORBA писал(а):А вот код вызова функции:

Угу. Уже вижу.
Но, тем не менее, для чистоты эксперимента код на дельфи в студию.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 18.10.2005 (Вт) 22:37

Да без проблем
Код: Выделить всё

library Project2;

uses
  SysUtils,
  Classes;

{$R *.res}
  function Sum(X,Y:Integer):Integer;
  begin
  Result:=X+Y;
  end;
  exports Sum;
begin
end.

У каждой сложной задачи есть множество простых для понимания, но неправильных решений.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.10.2005 (Вт) 22:47

Угу.
В точечности так.

То, что в дельфи по дефолту byval, а в VB byref, мы, конечно, не знаем?
То, что в дельфи integer равен VB long, мы не знаем тоже?
Как и то, что по умолчанию дельфи использует неподдерживаемую в VB свою собственную конвенцию pascal?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 18.10.2005 (Вт) 23:01

GSerg писал(а):Угу.
В точечности так.

То, что в дельфи по дефолту byval, а в VB byref, мы, конечно, не знаем?
То, что в дельфи integer равен VB long, мы не знаем тоже?
Как и то, что по умолчанию дельфи использует неподдерживаемую в VB свою собственную конвенцию pascal?


Так какой собственно вывод? Можно или нельзя использовать в ВБ длл сделаные в делфи??? И если можно киньте в меня кодом как это сделать правильно, а то я как раз со всеми пунктами не знаком.
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.10.2005 (Вт) 23:23

function Sum(X,Y:Integer):Integer; stdcall;


Остальное легко выводится из моих маленьких замечаний...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 24

    TopList