Fortran Coder

查看: 9445|回复: 4
打印 上一主题 下一主题

[绘图界面库] 彭国伦 SGL 和 MSFLIB 问题

[复制链接]

9

帖子

3

主题

0

精华

入门

F 币
43 元
贡献
25 点
跳转到指定楼层
楼主
发表于 2015-6-8 23:18:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人刚学Fortran,因化工类一些课题需要模拟计算
[问题1]:
看了《彭国伦》经典教程
其中书本光碟自带SGL库在我的计算机上无法加载(已将Lib和include装进去对应文件夹了),

运行如下代码:
[Fortran] 纯文本查看 复制代码
program main
  use sgl
  implicit none
  external display ! 声明display是个函数
  ! 设定当窗口需要重绘时,会调用子程序display
  call sglDisplaySub(display)  
  ! 打开窗口, 窗口左上角为(100,100), 长宽同为500
  call sglCreateWindow(100,100,500,500,0)
  write(*,*) "Waiting message."
  ! 等待使用者给程序的信息
  call sglMainLoop()
  write(*,*) "The End."
  stop
end
! 每当窗口需要更新画面时, 会调用display
subroutine display()
  use sgl
  implicit none
  call sglClearBuffer()          ! 消除屏幕
  call sglColor3f(1.0,0.0,0.0)   ! 设定目前要使用红色来绘图
  call sglDrawLine(0,0, 500,500) ! 在(0,0)到(500,500)两点之间画线
  return
end subroutine

--------------------Configuration: 20150608 - Win32 Debug--------------------
Compiling Fortran...
C:\Program Files\Microsoft Visual Studio\MyProjects\20150608\01.f90
Linking...
LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library
01.obj : error LNK2001: unresolved external symbol _SGLDRAWLINE@16
sgl.lib(sglcore.obj) : error LNK2001: unresolved external symbol __imp__PostQuitMessage@4
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__PostQuitMessage@4
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__SetWindowTextA@8
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__ShowCursor@4
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__SetTimer@16
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__KillTimer@8
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__DispatchMessageA@4
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__TranslateMessage@4
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__PeekMessageA@20
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__SendMessageA@16
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__UpdateWindow@4
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__ShowWindow@8
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__CreateWindowExA@48
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__RegisterClassA@4
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__GetStockObject@4
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__LoadCursorA@8
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__GetSystemMetrics@4
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__DefWindowProcA@16
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__EndPaint@8
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__BeginPaint@8
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__AdjustWindowRect@12
sgl.lib(sglwin32.obj) : error LNK2001: unresolved external symbol __imp__SetRect@20
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__CreateFontA@56
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__DeleteObject@4
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__ReleaseDC@8
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__GetDeviceCaps@8
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__GetDC@4
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__GetClientRect@8
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__TextOutA@20
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__SetTextColor@8
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__SetBkMode@8
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__SelectObject@8
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__OffsetRect@12
sgl.lib(ddraw_utility.obj) : error LNK2001: unresolved external symbol __imp__ClientToScreen@8
Debug/20150608.exe : fatal error LNK1120: 34 unresolved externals
Error executing link.exe.
20150608.exe - 36 error(s), 1 warning(s)


百度了,貌似很多人遇到这个问题,但都不知道怎么具体解决哦
有的说在project-setting-Link再加入什么参数???
本文系统:Win8,安了IVF2013后,又安装过兼容模式的CVF 6.6,都遇到这样问题唉,目前因为自学需要都用CVF 6.6
请高手解答一下;

[问题2] 想问下,MSFLIB这个是什么库???哪里有的下载?有的代码有应用这个库,希望看看运行效果

谢谢


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2015-6-9 09:07:47 | 只看该作者
1. 函数库是分平台的。彭老爷子的SGL在CVF上编译,不能直接在 IVF 上使用。你需要重新对 SGL 在 IVF 上编译。(我记得有源码)
2. 在 win8 上请不要使用 CVF,自学也不要。
3. 我觉得 SGL 只是告诉你函数库怎么使用,你没必要非得用它来学习。
4. MSFLIB 是更早期的 fortran 编译器,例如 DVF,PowerStation 扩展的函数库(不提供源代码),现在的编译器好像也用不了,但具体函数都有替代的。

9

帖子

3

主题

0

精华

入门

F 币
43 元
贡献
25 点
板凳
 楼主| 发表于 2015-6-9 15:13:03 | 只看该作者
vvt 发表于 2015-6-9 09:07
1. 函数库是分平台的。彭老爷子的SGL在CVF上编译,不能直接在 IVF 上使用。你需要重新对 SGL 在 IVF 上编译 ...

谢谢热心的回复
不过win8上CVF我已经顺畅运行好一段时间囖
能否告诉我MSFLIB被什么库替代了?IMSL?

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
地板
发表于 2015-6-9 16:23:18 | 只看该作者
1.请相信我,win8不兼容 cvf,具体请看 http://cvfwin7.w.fcode.cn
2.一定要认真对待别人的经验和教训,这是数千人多年来经验的总结,很宝贵。等你代码写更多一些的时候,你就知道确实不兼容了。
3.要认真理解“不兼容”是什么意思。
4.这个MSFLib库包含很多扩展的语法,并不是简单的被新的函数库替代。而是具体函数要具体去找对应的扩展。不过,在ivf上,你可以试试 IFLib,IFPort 这两个。

9

帖子

3

主题

0

精华

入门

F 币
43 元
贡献
25 点
5#
 楼主| 发表于 2015-6-14 22:43:00 | 只看该作者
vvt 发表于 2015-6-9 16:23
1.请相信我,win8不兼容 cvf,具体请看 http://cvfwin7.w.fcode.cn
2.一定要认真对待别人的经验和教训,这 ...

谢谢,很受用
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-30 11:58

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表