Як створити та використовувати бібліотеку DLL у Fortran

Створення DLL

Створюємо проект типуFortran DLL. Я використовую середовище Code::Blocks, але і в інших середовищах, які працюють з Fortran-ом, є аналогічні види проектів. Назвемо проект mydll.

Наша бібліотека буде містити лише одну функцію (приклад запозичений з книги Артемова):

Збережемо її у файлі funcdll.f95, який додамо до проекту.

Транслюємо проект. В результаті будуть отримані 3 файли: mydll.dll, libmydll.a і libmydll.def. Вони нам знадобляться надалі.

Виклик функції з DLL

Створимо консольну програму (в Code::Blocks цеFortran Application ) use_dll з наступною програмою

У блоці interface описаний інтерфейс функції, що викликається. Атрибут DLLIMPORT вказує на те, що функція імпортується з бібліотеки DLL. Далі слідує виклик функції.

Щоб усе це спрацювало, потрібно забезпечити доступність .a-файлу (або .lib-файлу) на етапі компонування і .dll-файлу — на етапі виконання. Найпростіше для цього скопіювати в папку з виконуваним файлом проекту use_dll.exe (Debug або Release) отримані раніше mydll.dll, libmydll.a та libmydll.def. Крім того, в опціях компонувальника (Project-&Build Options, вкладка Linker Settins) потрібно вказати шлях до libmydll.a .

Виклик зібраної програми дає наступний результат:

використовувати

Використовуючи use_dll.exe, не забудьте скопіювати і покласти в доступне для системи місце (наприклад, у спільну з use_dll.exe папку) файл бібліотеки mydll.dll. Інакше буде видано повідомлення про помилку.

І ще простіше – без метакоманд

Але є і простіший шлях. Якщо ви створюєте DLL, яку плануєте використовувати тільки з Fortran, то ніяких метакоманд вказувати не обов'язково.

Створюємо бібліотеку mydll.dll з функції:

Як і раніше створюємо додаток use_dll, копіюємо файли бібліотек у папку з виконуваним файлом і підключаємо бібліотеку в опціях компонувальника. Однак тепер код основної програми не міститиме метакоманд, але тільки опис функції F як зовнішньої (external):

Читайте також

Коментарі

Дмитро Храмов Комп'ютерне моделювання та все, що з ним пов'язано: збір даних, їх аналіз, розробка математичних моделей, софт для моделювання, візуалізації та оформлення публікацій. Ну і за життя небагато.