Есть ли способ экспортировать функцию (не класс) в VB6? - PullRequest
1 голос
/ 10 марта 2010

Я хочу создать ActiveX DLL из Visual Basic 6, из которой я хотел бы вызвать некоторые общедоступные функции. Я буду называть эту DLL только из VB6. Однако кажется, что экспортируются только классы. Есть ли обходной путь?

Я знаю, что есть способ создавать библиотеки DLL из VB6 со стандартными функциями WINAPI. Это не то, что я хочу, потому что мне нужно было бы вводить тысячи инструкций объявления, и я терял бы динамическое связывание, поэтому мне не нужно перекомпилировать приложения при изменении DLL.

Я изложу свою проблему на всякий случай, если у кого-то есть идея получше. У меня есть куча относительно больших проектов, каждый со своим кодом, а затем у меня много «общего» кода, который используется в нескольких проектах. Досадно добавлять каждый файл в каждый новый проект, и приходится перекомпилировать их все для каждого незначительного изменения. Поэтому я подумал о создании DLL, поэтому я просто добавил «Ссылку», когда начинаю новый проект, и мне больше не нужно беспокоиться о перекомпиляции (по крайней мере, для небольших изменений), но я пришел в ярость, когда обнаружил, что экспортируются только классы .

Я бы не отказался реорганизовать код в классах, но это трудоемкая задача: существует около 10 лет кода из 3-4 человек, поэтому я не могу это сделать за одну ночь.

1 Ответ

5 голосов
/ 10 марта 2010

Да, это легко.

  1. Поместите все служебные процедуры в специальные классы в DLL.
  2. Установите свойство Instancing этих классов как GlobalMultiUse.
  3. Сборка DLL.
  4. В вашем клиентском проекте (со ссылкой на DLL) вы теперь сможете вызывать функции и подпрограммы, как если бы они были в модуле этого проекта. Вам не нужно создавать какие-либо объекты.

Подробнее читайте в руководстве VB6 .

...