Страница 3 из 3

Re: Native DLL с помощью чистого VB6 без примочек

СообщениеДобавлено: 27.02.2014 (Чт) 5:54
arthur2
Экспортируем функции. Затем в этом же проекте декларируем их. В Declare в качестве Lib указываем путь к своему же экзешнику.

Re: Native DLL с помощью чистого VB6 без примочек

СообщениеДобавлено: 27.02.2014 (Чт) 5:55
Хакер
Так это называется «импортировать из самого себя», а ты написал «экспортировать из самого себя». Экспорт и так всегда происходит из самого себя.

Конечно так можно и это очевидно, но в чём смысл такого мероприятия?

Плюс, огромный минус в привязке к имени exe-файла.

Re: Native DLL с помощью чистого VB6 без примочек

СообщениеДобавлено: 27.02.2014 (Чт) 6:12
arthur2
Так это называется «импортировать из самого себя», а ты написал «экспортировать из самого себя».
Сначала из себя экспортируем, потом в себя импортируем. Ну да, "импортировать" - внятнее :)
Смысл - можно переопределять функции. Пока вроде больше никакого.

Re: Native DLL с помощью чистого VB6 без примочек

СообщениеДобавлено: 27.02.2014 (Чт) 6:20
Хакер
arthur2 писал(а):Смысл - можно переопределять функции. Пока вроде больше никакого.

Для этого надо пользоваться кирпичём MagicPointers.

Плюсы очевидны:
  • Не выставляем private-кишки наружу.
  • Не привязаны к имени исполняемого файла.

Re: Native DLL с помощью чистого VB6 без примочек

СообщениеДобавлено: 27.02.2014 (Чт) 6:24
arthur2
Хакер писал(а):Для этого надо пользоваться кирпичём MagicPointers.
Им, собственно, и пользуюсь... А это просто пришло в голову - решил проверить.

Re: Native DLL с помощью чистого VB6 без примочек

СообщениеДобавлено: 15.03.2016 (Вт) 19:51
ger_kar
Хакер писал(а):...
VB поддерживает секцию VBCompiler в которой может быть два ключа:
C2Switches — который определяет дополнительные ключи вызова компилятора (c2.exe)
LinkSwitches — который опредеяет дополнительные ключи вызова линкера (link.exe)
...
Так вот, если у вас в модулях есть функции Foo и Bar и вы хотите их экспортировать в своей DLL, единственное, что вам нужно сделать, это открыть vbp-файл блокнотом и добавить туда вот это:
Выделить всё[VBCompiler]LinkSwitches=-export:Foo -export:Bar
...
VBP-файл (файл проекта) по своей сути является ini-файлом. Это никакой не секрет, не тайна, а вполне себе документированный факт. Вы можете делать в нём [секции] и пары ключ=значение как в любом нормальном ini-файле. (Это настолько документировано, что Add-in'ам дали возможность вызывать методы ReadProperty/WriteProperty у класса VBProject, чтобы Add-in'ы могли хранить свои произвольные данные, привязанные к проектам.)
...В топку всякие примочки, подменяющие link.exe или делающие подобные грязные трюки. VB изначально позволяет вам обойтись без этого. Правда и никакой «инициализации рантайма» нет, но ни одна из «грязных примочек» её и так не предлагала, только мой FNDLL имел в этом плане отличие.

А теперь вопросы:
1) Если Add-in'ы могут писать в файл проекта, то может этот процесс как то автоматизировать написав соответствующий Add-in, только вот вопрос, как помечать такие экспортируемые функции?
2)Инициализации рантайма нет, но если функции использовать из проекта VB6, то к моменту вызова функций рантайм же по идее будет инициализированным так? Т.е. для использования из VB6 доп. инициализация и не нужна вовсе?