回 帖 发 新 帖 刷新版面

主题:关于Intel Fortran 9.1生成的DLL文件之命名

我新建了一个工程Fsubroutines(模板为Dynamic-link Library),
在Build Solution后, 在Debug目录下可以得到dll文件, 其文件名为fsubroutines.dll(均为小写)
在这个目录中还可得到的静态链接库、目标文件Fsubroutines.lib、fsubroutines.obj(文件名与工程名一致)
编译环境:
Windows xp sp3
Visual Studio 2005 SP1 Professional Edition(EN)
Intel Fortran Compiler  9.1
但是我以前在
Windows 7 旗舰版
Visual Studio 2008 SP1 Professional Edition(EN)
Intel Fortran Compiler Professional Edition  11.1.060
这种环境下编译, 所得各文件名均与工程名一致
那么,我想问的是在Intel Fortran Compiler 9.1 中的情况是正常的么?是否可以设置所得dll文件名与工程名一致?
注: (1)我的目的是要在C语言中调用DLL文件
    调用方式为:HINSTANCE hLibrary=LoadLibrary("D:\\Dll\\fsubroutines.dll"); 
      当然我发现在这里fsubroutines.dll大小写均可(设置Use Multi-Byte Character Set)
    (2)将Generate Manifest设置为No后,dll文件名与工程名一致
以下为源码Fsubroutines.f90
INTEGER*4 FUNCTION Fact (n)
   !DEC$ ATTRIBUTES DLLEXPORT,STDCALL,ALIAS:'_FACT@4'::Fact
      INTEGER*4 n [VALUE]
      INTEGER*4 i, amt
      amt = 1
      DO i = 1, n
        amt = amt * i
      END DO
      Fact = amt
   write(*,*)"Mixed calls succeed!"
END FUNCTION Fact
SUBROUTINE Pythagoras (a, b, c)
   !DEC$ ATTRIBUTES DLLEXPORT,STDCALL,ALIAS:'_PYTHAGORAS@12'::Pythagoras
      REAL*4 a [VALUE]
      REAL*4 b [VALUE]
      REAL*4 c [REFERENCE]
      c = SQRT (a * a + b * b)
END SUBROUTINE Pythagoras

回复列表 (共6个回复)

沙发

1. dll 的名字有什么关系呢?能用就行了。windows 操作系统不区分文件名的大小写

2. 既然都是一致的,为什么你会产生这个问题呢?

3. 如果你要改变编译输出的文件名。可以通过工程设置 link,output 中设置。

[quote]
我新建了一个工程Fsubroutines(模板为Dynamic-link Library),
在Build Solution后, 在Debug目录下可以得到dll文件, 其文件名为fsubroutines.dll([color=red]均为小写[/color])
在这个目录中还可得到的静态链接库、目标文件Fsubroutines.lib、fsubroutines.obj(文件名与工程名[color=red]一致[/color])
编译环境:
Windows xp sp3
Visual Studio 2005 SP1 Professional Edition(EN)
Intel Fortran Compiler  9.1
但是我以前在
Windows 7 旗舰版
Visual Studio 2008 SP1 Professional Edition(EN)
Intel Fortran Compiler Professional Edition  11.1.060
这种环境下编译, 所得各文件名均与工程名[color=red]一致[/color]
那么,我想问的是在Intel Fortran Compiler 9.1 中的情况是正常的么?是否可以设置所得dll文件名与工程名[color=red]一致[/color]?[/quote]

板凳


我是不是可以这样理解:dll文件的使用与文件名无关(Windows系统下)?

3 楼

另外,Manifest文件的作用是什么?我百度了一下,还是没有搞清楚,你能解释一下么?

4 楼

是的,无关。

manifest 我理解得也不是很深刻,我目前知道的用处只是把对话框和菜单改成 XP 的风格,让程序变得更好看。

其他用处我也不是很清楚。

5 楼

风格是其一 
最主要作用是完成程序和不同dll版本的匹配

已经在VC2010之后废弃了

6 楼

董兄正解:)
其实就是主要用于区别小版本的:)
比如MFC80.dll系统有N个,且小版本不同(就是编译的先后不同,且接口有改动)当新程序用新库编译时,则需要的库也是新的,但老程序用新库则有可能因不兼容问题导致程序挂起:)

我来回复

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