Мне нужно создать динамическую библиотеку DLL на C++, чтобы заменить старую библиотеку DLL, написанную на Fortran, без изменения хост-приложения (поэтому функции и параметры должны оставаться одна и та же).Как создать динамическую библиотеку DLL в C++, чтобы заменить устаревшую библиотеку Fortran DLL
У меня есть полная спецификация всех функций Fortran в этой библиотеке, но какие инструменты (компилятор) мне нужно использовать, и каков способ кодирования DLL в этой ситуации (stdcall, cdecl, dllexport и т. Д.). Я не говорю много для меня, я никогда не создавал DLL раньше).
Это пример Fortran объявление функции в унаследованной DLL:
SUBROUTINE SetBoundaries(MaxFlow, MinFlow)
cDEC$ ATTRIBUTES DLLEXPORT :: SetBoundaries
cDEC$ ATTRIBUTES ALIAS: "SetBoundaries" :: SetBoundaries
REAL MaxFlow
REAL MinFlow
Я попытался собрать VC2008 DLL, но получил сообщение об ошибке:
Unhandled error in 'InitAllPublicVars' Run-time error 453: Can't find DLL entry point DLLVersion in SomeLib.DLL
Источник этой DLL (определение функции с именем DLLVersion не help):
void __stdcall SetBoundaries(float *min , float *max) {
}
Является DLLVersion некоторой специальной процедурой DLL или просто отсутствует в моя документация, и я должен создать такую функцию?
Я не знаю никаких подробностей о первоначальном Fortran DLL источнике/процессе компиляции, но есть некоторые извлекаемая информация:
Какой компилятор Fortran использовался для сборки библиотеки DLL? Какие параметры командной строки были использованы с этим компилятором? Какой компилятор C++ вы используете? – IanH
C++ - любой, Fortran - у меня нет информации. Вопрос обновлен с некоторыми извлеченными деталями. –