Статическое связывание в Фортране - PullRequest
3 голосов
/ 13 октября 2011

Я разработал модуль, написанный на C ++, который управляет лицензиями на продукт моей компании. Чтобы предотвратить замену DLL, наша цель - статически связать DLL в решении. Это очень легко сделать в C ++, но оказывается немного проблематичным для части нашей кодовой базы, написанной на Фортране.

Я понимаю, что это может варьироваться от компилятора к компилятору (мы используем Intel Fortran 9.1), но существует ли какой-либо универсальный способ реализации статической компоновки DLL C ++ в Fortran?

Ответы [ 2 ]

1 голос
/ 15 октября 2011

Чтобы получить статическое связывание, обычным способом является не использование DLL, а простые библиотеки (* .lib). Это не имеет ничего общего с языками программирования: это зависит только от операционной системы.

Сборка библиотеки также проще, чем сборка DLL. В Unix у библиотеки есть суффикс .a, тогда как у библиотеки DLL есть суффикс .so (для общего объекта).

Тем не менее, часто можно статически связать DLL, но это достигается с помощью конкретной опции, передаваемой компоновщику. Например, в Unix, со многими наборами компиляторов, опция может быть -static или -Bstatic. Посмотрите на ключевое слово "static" в руководстве по программированию ваших компиляторов.

1 голос
/ 15 октября 2011

Если у вас есть доступ к источнику, просто скомпилируйте его в объектные файлы и свяжите их с вашим проектом на Фортране.ISO_C_BINDING должен работать на многих компиляторах.

...