Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

VB и моя DLL'ка

7
22 января 2007 года
@pixo $oft
3.4K / / 20.09.2006
Написал я свою DLL'ку на Асме и захотел её в VB заюзать.Но столкнулся с рядом траблов:
1)VB в упор не видит мою DLL'ку(Run-time error 48:File <имя моей DLL'ки> not found).Сначала она лежала на смонтированном Виндой диске B:.Я подумал,что это какой-то глюк и файлы с виртуальных дисков и без имени(только с расширением) VB не открывает.Я её переместил на D:,но он опять её не увидел(я подумал,это из-за того,что в имени папки,где лежала DLL'ка,были пробелы).Потом я его переместил в %WinDir%,но и там он её не увидел!!!
В первом случае я писал
 
Код:
Private Declare Function WriteData Lib "B:\Bin\Current\.dll" Alias "_WriteData@0"(ByVal lpPStr0 as String,ByVal lpPStr1 as String,ByVal lpPStr2 as String) As Long

потом путь исправил на D:\@pixo $oft\Programs\Tools\Development\MAsm32\Bin\<какоетотамимялатинскимибуквамибезпробелов>.dll(диск B: у меня смонтирован на D:\@pixo $oft\Programs\Tools\Development\MAsm32),но и там он её не увидел.В третьем случае пути были разные:и Test,и Test.dll,и C:\Windows\Test.dll,но он её не увидел опять.В чём дело?
2)(не совсем в тему)Почему имя моей процедуры становится таким,прям как в Ц(вместо WriteData _WriteData@0,хотя у неё 3 аргумента(правда,они не заданы явно директивой Arg)).Читал я,что это носит название function name mangling'а(кстати,как это правильно перевести,а то я док перевожу и перевёл это как "изменение имён функций"?).Как это исправить?
Компиляция с помощью ML/Link32
3.5K
23 января 2007 года
Rubins
30 / / 16.06.2003
Непонятно, на каком языке писалась DLL.
В декларации на С/C++ должно быть _pascal и "С" (способ передачи параметров pascal).
extern "C" void _pascal Function(char *param1, char *param2, char *param3);

Если нужно, чтобы Function не представлялась в виде _Function@12
или _Function@0, то в проекте DLL должен быть файл с расширением .DEF, в котором имя функции указывается явно:

LIBRARY LIBR.DLL

EXPORTS

Function
7
23 января 2007 года
@pixo $oft
3.4K / / 20.09.2006
Ну,кхммм...Вообще-то,в начале темы сказано ясно:
Цитата:
Написал я свою DLL'ку на Асме...

,так что я не думаю,что здесь можно чё-то не понять.На крайний случай в конце написано,чем это компилировалось
А нельзя ли без .def?А если нельзя,то как с ним делать?

7
31 января 2007 года
@pixo $oft
3.4K / / 20.09.2006
Я,кажется,понял тебя.Ты имел ввиду "язык" в заголовке процедуры,т.е. WriteData Proc <язык> Export.Я исправил на C и всё заработало.И почему DLL'ка не подключается,я тоже понял(почти)-потому что проект не сохранён(вот идиотство-пока не сохранишь проект,твои DLL'ки не видны.А стандартные Виндовские всегда работают:mad:)!!!Когда я его сохранил,всё заработало(а почему не работало до сохранения?)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог