Допустим у вас есть несколько проектов которые надо слить в один.
1- ый проект написан для PB9 с его версией хидеров
2- ой проект написан для PB10 со стандартной версией хидеров
3 - для PB10 с Windows API Headers II v.1.0 от José Roca
4 - для PB10 с Windows API Headers III v.1.04
А теперь попробуйте все это слить в один проект и откопилировать все в PB10. Как говорится фиг вам!
В инклюдах запутаетесь. Или все надо переделывать под последнюю версию хидеров, что очень печально, скучно и чревато ошибками.
И еще к тому же приводит к раздуванию генерируемого EXE файла. Так вот с помощью SLL все можно легко переделать и вообще избавиться от хидеров!
Для этого:
- Переносим весь код старого проекта в класс и его методы. Класс компилируем как SLL c нужной ему версией хидеров, со своим глобальными переменными, типами и прочим мусором
- Код: Выделить всё
#Compile SLL
#Include "F:\PBWin103\WinAPI\win32api.inc"
Type TCmd
Command As Dword
sizex As Dword
End Type
%METHOD_BUFFERED = 0
%FILE_ANY_ACCESS = 0
%FILE_DEVICE_UNKNOWN = 34
Class cTEST1 Common
............ КОД КЛАССА
- делаем это для всех 4 кусков проекта, в результате получает 4 бинарных SLL файла
- пишем основной проект в котором указываем пути для директивы #LINK и прописываем пути к классам
- Код: Выделить всё
#Compile Exe
#Dim All
#Link "..\SHARED_SLL\PB9\TEST1.sll"
#Link "..\SHARED_SLL\PB10_1\TEST2_sll.sll"
#Link "..\SHARED_SLL\PB10_2\TEST3_sll.sll"
Function PBMain () As Long
Local clsTEST1 As cTEST1Interface
clsTest1 = Class "cTest"
Local clsTEST2 As cTEST2Interface
clsTest2 = Class "cTest2 "
Красота же! Мы получили 4 класса, каждый был скомпилирован со своими версиями хидеров и со своим глобальным мусором.
И теперь они никак не влияют друг на друга. Все инкапсулировано внутрь SLL. После компиляции получаем монолитный экзешник, размеров меньший чем если бы мы просто подключали инклюды с классами. И хидеров теперь вообще нет! Только красивая объектная модель.