英特尔Visual Fortran编译器名称错误,是我的编译器只是疯了吗?

时间:2012-09-26 20:40:10

标签: compiler-construction fortran linker-errors name-mangling

我正在使用英特尔Visual Fortran Composer XE 2011在MS Visual Studio 2008中构建我的Fortran项目。我收到链接器错误:LNK2019未解析的外部符号。

我在我的obj文件上做了一个dumpbin,我的所有符号(在CVF调用约定下)都导出为_symbol1,_symbol2,_symbol3等,除了三个随机的符号前缀有一些东西。

例如:_ imp _symbol4,_ imp _symbol5,_ imp _symbol6

起初我怀疑我的调用约定一定是问题,但是如果它是我的调用约定,那么所有其他符号是否也会以imp为前缀导出?这是随机的,其中三个出口奇怪,我不太明白发生了什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

与这些符号对应的实体可能具有DLLIMPORT属性。链接步骤可能缺少相关的导入库。

答案 1 :(得分:0)

我发现问题是因为当我真的不需要它们时,我为这些符号提供了一些DLL导出语句。它使编译器期望_ imp _sybmol,因为我使用语句导出它们:

    !DEC$ATTRIBUTES STDCALL:: YOURSYMBOL
!DEC$ATTRIBUTES DLLEXPORT:: YOURSYMBOL

我刚删除它们,链接器错误就消失了。