回 帖 发 新 帖 刷新版面

主题:LNK 4217 警告

我在编DLL的时候,生成成功了,但是给了我两个警告。

warning: locally defined symbol_imp_LSVHIA imported.
warning LNK 4217

上网查了下原因,然后又检查了一下程序,请问各位大虾我想到的这个原因会不会引起上面的警告

原因是,在我的文件里面有多个子程序,LSVHIA也是其中之一。
我在LSVHIA中写了 !DEC$ ATTRIBUTES DLLEXPORT :: LSVHIA
但是我也用同文件下的其它子程序里调用了LSVHIA

所以导致LSVHIA这个子程序既有被外界调用的属性,但是又被同文件下的其它子程序调用了,所以给了上面的警告?

如果是这个原因的话,该如何修改呢?

回复列表 (共8个回复)

沙发

大家都没有遇到这个问题吗,还是我没有说清楚。。。

板凳

沒遇到過,你可以把調用它的地方先注釋了然后編譯一下試試。

3 楼

嗯,后来我试着注释了一下,就没有警告了。而且有警告的情况下不影响程序的运行。但是一直不知道FORTRAN里有什么方法可以把这种情况产生的警告去掉。

4 楼

一般导出的函数是不直接被内部调用的。
有一种办法就是:
将原导出函数的实际函数体做成另一个函数,如IN_LSVHIA
新的LSVHIA不做别的操作,直接调用IN_LSVHIA
内部调用时就调用IN_LSVHIA。

5 楼

警告而已,怕啥
也得看警告内容的
天天N多无聊警告的飘过

6 楼

4楼的方法是可行的,我也想到过,可是真的没有别的方法来去除警告了?。。。

7 楼

这警告是告诉你,保不齐哪天我就不支持这样做了:)

8 楼

那就只能照4楼的方法编了。。。

我来回复

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