回 帖 发 新 帖 刷新版面

主题:彭国伦《fortran95程序设计》SGL库调用问题的解决方法

很多人按他书上方法做,程序调用sgl库编译时都遇到问题,解决方法是:
按照他p396页说的方法添加sgl库的include和lib目录,然后在project-setting-link里面添加上ddraw.lib dinput.lib dxguid.lib sgl.lib以及user32.lib gdi32.lib。然后就可以编译了。



关键是user32.lib和gdi32.lib这两个文件,如果没有这两个文件,就会出现很多错无法编译通过,而他的书里面却没有提到。这两个文件已在默认库文件搜索路径下。

实际上根据编译器提示的信息,比如找不到SetBkMode外部函数,在CVF的help里面搜一下,得知是在gdi32.lib里面,加上就行了

回复列表 (共13个回复)

沙发

User32 和 GDI32 都是 Windows API 的标准库,不需要作者额外提供的。

板凳

用这个画正玄、余玄曲线方便吗。用于做数值分析结果显示方便吗

3 楼

能不能把你的sgl库给我传一份,谢谢了。xingwei499@tom.com

4 楼

楼主说的太好了   我今天就碰到这样的问题结果照楼主的说的 作了之后就编译通过了

5 楼

我的怎么不行啊我加了啊
书上415业的例子啊

6 楼

我个人实践证明

这种方法在CVF6.5下是可行的

但到了CVF6.6c,则编译时出报错:

--------------------Configuration: sgl - Win32 Debug--------------------
Compiling Fortran...
D:\CVF6.6\WeiXing's Projects\sgl\sgl.f90
D:\CVF6.6\WeiXing's Projects\sgl\sgl.f90(2) : Error: This module file was generated for a different platform or by an incompatible compiler or compiler release. It cannot be read.   [SGL]
  use sgl
------^
D:\CVF6.6\WeiXing's Projects\sgl\sgl.f90(17) : Error: This module file was generated for a different platform or by an incompatible compiler or compiler release. It cannot be read.   [SGL]
  use sgl
------^
Error executing df.exe.

sgl.exe - 2 error(s), 0 warning(s)

看来sgl的可移植性有待解决!

下面是我个人的解决方法:

1.在光盘\sgl\src下,删除Release文件夹,用CVF6.6c打开sgl.dsw,重新编译,在Release

文件夹生成sgl.lib和sgl.mod,然后把两者分别替换搜索目录 INCLUDE 和 LIB 下对应的

文件

2.之后按照楼主的方法编译,若用Debug编译,可能性会出现如下报错:

LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; 

use /NODEFAULTLIB:library

解决方法见:http://blog.csdn.net/jiazhen/archive/2007/07/05/1679356.aspx

总之,sgl的问题已经彻底解决


7 楼

[quote]我的怎么不行啊我加了啊
书上415业的例子啊[/quote]

书上和光盘上的源程序有一些是有错的

比如把 sglline 写成了 sgldrawline

类似的只要把中间的draw去掉就行了

8 楼

多谢楼主分享解决方法,我在论坛上翻了两个小时才找到你的帖子的解决办法  不胜感激啊!

9 楼

我想问下楼主,怎么弄可以把link的修改一次改好,我每次新建个program后都要重新加link!
谢谢!

10 楼

楼主说的太好了   我今天就碰到这样的问题结果照楼主的说的 作了之后就编译通过了

我来回复

您尚未登录,请登录后再回复。点此登录或注册