Я пытаюсь скомпилировать программу, написанную в FORTRAN, которая графически отображает графики с использованием библиотек DISLIN, но все данные имеют двойную точность. Я не могу потерять эту точность, поэтому переход к простой точности - это не вариант. При попытке установить связь с библиотеками двойной точности (_d), я все еще получаю следующее сообщение об ошибке, я бы ожидать, если бы я связан с простой точностью библиотек:Библиотеки с двойной точностью DISLIN
call graf(-1.D0, 1.D0, -1.D0, 2.D0/10.D0, -1.D0, 1.D0, -1.D0, 2.D0/10.)
(1)
ERROR: Type mismatch in argument 'ax' at (1); passed from REAL(8) to REAL(4).
Я также получить другие подобные ошибки во все планировавшем заявлении. Моя команда компиляции (gfortran):
gfortran modulename.f95 progname.f95 C:\dislin\disgf_d.a -luser32 -lgdi32 -lopengl32
Обратите внимание, что disgf_d ссылается на библиотеки двойной точности. Кто-нибудь есть идеи здесь?
Соответствующий код:
call metafl("XWIN")
call disini()
call graf(-1.D0, 1.D0, -1.D0, 2.D0/10.D0, -1.D0, 1.D0, -1.D0, 2.D0/10.D0)
do i = 0, m
Z(i) = -1.D0 + (2.D0*i)/m
Y_Z(i) = Int_g(Z(i))
end do
call curve (Z, Y_Z, m + 1)
do i = 0, m
Y_Z(i) = g(Z(i))
end do
call curve (Z, Y_Z, m + 1)
call endgrf()
call disfin()
Эта ошибка говорит вам, что конкретный аргумент - * не * двойная точность. Вам необходимо изучить документы пакета (или исходный код), чтобы убедиться, что вы используете правильный тип для каждого аргумента. – agentp
Я бы предположил, что '-ldislin_d' является ссылкой для библиотек с двойной точностью. –