Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Программирование

как в Delphi 6 использовать DLL, созданный в Visual Basic : Программирование

16.04.2024 9:09


04.03.2012 13:26
Janek
 
как в Delphi 6 использовать DLL, созданный в Visual Basic

Добавлено через 19 минут 46 секунд
Если использую метод статической вставки DLL-файла:
implementation

{$R *.dfm}
procedure set_CommodityCharSize(B:WideString); far external 'ScLoad.dll';

procedure TfmExample.bbRunClick(Sender: TObject);
var B:integer;
Handle:LongWord;
begin
B := 12;
set_CommodityCharSize(IntToStr(B));
end;

то тогда при запуске клавишой F9 возникает сообщение
"The module ScLoad.dll was loaded but the
entry-point DllRegisterServer was not found.

Make sure that "scload.dll" is a valid DLL or OCX file
and then try again."

Добавлено через 3 минуты 13 секунд
"the application was unable to start correctly (0xc000007b). Click OK to close
the application."

Вот это сообщение выходит при запуске клавишей F9
04.03.2012 13:30
AlexeyF
 
Какая разница где создана dll
В дельфи есть стандартный способ объявить dll в программе. Единственный нюанс способ передачи параметров - на сколько помню их два. Если известны процедуры/функции, передаваемые параметры и их типы - открой хелп - там всё есть.
04.03.2012 13:35
Janek
 
Да, эти процедуры и параметры процедур известны, но почему-то при попытке использования этих процедур в проекте Дельфи6 возникает сообщение
"the application was unable to start correctly (0xc000007b). Click OK to close
the application."
04.03.2012 13:59
AlexeyF
 
{ импорт по специфицированному имени }

procedure ImportByName;external 'MYDLL' name 'MYEXPORTPROC';

{ импорт по оригинальному имени }

procedure MyExportFunc1; external 'MYDLL';

Попробуй по другому объявить.

Добавлено через 17 минут 14 секунд
Сделай поиск строчки "delphi dll 0xc000007b" в гугле
Много интересного вылезает - основная мысль всётаки неправильная передача параметров.
04.03.2012 14:23
Janek
 
Попробовал объявить эту процедуру по-другому:
procedure set_CommodityCharSize2(B:WideString); external 'ScLoad.dll' name 'set_CommodityCharSize'; ,

но все равно при запуске клавишей F9 возникает сообщение:

"the application was unable to start correctly (0xc000007b). Click OK to close
the application."

Добавлено через 1 минуту 14 секунд
Да, я искал в гугле по теме этой ошибки, но ничего конкретного не нашел. Ни у кого не было этой проблемы.
04.03.2012 14:25
OlegON
 
исходник васика есть? еще в Delphi есть дампер dll, как я помню, вот им надо посмотреть exports-секцию в dll, сдается мне, что это сервер COM, а не просто подключаемая библиотечка. в общем, я склоняюсь к мысли, что вызов неправильный.
04.03.2012 14:57
Janek
 
я же передаю этой процедуре тип данных WideString.
Что здесь неправильного в конкретной передаче параметра?

Добавлено через 7 минут 9 секунд
Исоходник есть, но как я его Вам пришлю, если здесь нельзя ссылку показывать?
Здесь есть какой-то tlb-файл, но я не знаю, как его использовать в совокупности с dll-файлом.

Добавлено через 3 минуты 20 секунд
tdump.exe я запустил и в его результатах export секция была нулевая

Добавлено через 2 минуты 41 секунду
Интересно, что этот dll-файл не удается зарегистрировать в регистрах Windows 7 с помощью команды
regsvr32 scload.dll
04.03.2012 15:34
Janek
 
Что такое Васик?
05.03.2012 08:16
student
 
Цитата:
Janek то тогда при запуске клавишой F9 возникает сообщение
"The module ScLoad.dll was loaded but the
entry-point DllRegisterServer was not found.

Make sure that "scload.dll" is a valid DLL or OCX file
and then try again."
обычно это говорит о том, что ты пытаешься регистрировать элемент, который в принципе не может быть зарегистрирован- объявляй ф-ции длл-ки у себя внутри в проекте как обычные виндовые апи (извини синтаксис дельфей уже не помню - слишком давно было) и посмотри в инете соответствие типов переменных в этих средах

кстати,

Цитата:
Janek Исоходник есть, но как я его Вам пришлю, если здесь нельзя ссылку показывать?
Здесь есть какой-то tlb-файл, но я не знаю, как его использовать в совокупности с dll-файлом.
смысл тогда какой юзать эту длл-ку - портируй все к себе сразу (в васике все трогательно просто :))- меньше накладных расходов у тебя будет
05.03.2012 13:03
Janek
 
как корректно импортировать в Дельфи 6 компоненты ActiveX, созданные в Visual Basic?
Через Project - Import Type Library пробовал, но потом в проекте Дельфи кричит, что использую незарегистрированный класс.
Часовой пояс GMT +3, время: 09:09.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.