Re: Native DLL с помощью чистого VB6 без примочек
Добавлено: 27.02.2014 (Чт) 5:54
Экспортируем функции. Затем в этом же проекте декларируем их. В Declare в качестве Lib указываем путь к своему же экзешнику.
Весь вкус программирования!
http://bbs.vbstreets.ru/
Сначала из себя экспортируем, потом в себя импортируем. Ну да, "импортировать" - внятнееТак это называется «импортировать из самого себя», а ты написал «экспортировать из самого себя».
arthur2 писал(а):Смысл - можно переопределять функции. Пока вроде больше никакого.
Им, собственно, и пользуюсь... А это просто пришло в голову - решил проверить.Хакер писал(а):Для этого надо пользоваться кирпичём MagicPointers.
Хакер писал(а):...
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 имел в этом плане отличие.