Fortran Coder

查看: 358|回复: 3

[IDE] MODULE中导出变量时的链接警告怎么屏蔽掉呀!Studio 2019+IVF2019

[复制链接]

5

帖子

1

主题

0

精华

入门

F 币
60 元
贡献
31 点
发表于 2021-1-13 12:56:02 | 显示全部楼层 |阅读模式
本帖最后由 penultimate 于 2021-1-13 13:02 编辑

纯粹出于技术研究,搞一个C++/FORTRAN混编的小程序,在底层DLL中定义一个MODULE,其中的变量直接导出,给C++用(不想用SUBROUTINE,忒麻烦)。以前用的是Studio 2010 + IVF 11,编译链接都挺干净的。最近升到Studio 2019+IVF2019,出现了一堆警告,有点儿编程洁癖,请教一下大神怎么屏蔽,或者可以有其它的方法从MODULE中直接导出变量给C++直接使用。
底层DLL代码中的MODULE定义:

MODULE modVariables
   USE ISO_C_BINDING

   INTEGER(C_INT),     BIND(C,NAME="nVarFromModule") :: intVarModule = -1
   REAL(C_DOUBLE),    BIND(C,NAME="dVarFromModule") :: dblVarModule = -1.D0

!DEC$ ATTRIBUTES DLLEXPORT :: intVarModule, dblVarModule


END MODULE


在C++中,直接使用变量的新名字引用

extern "C" __declspec(dllimport) int        nVarFromModule;
extern "C" __declspec(dllimport) double dVarFromModule;


这一套混编机制本身没有问题。但,在底层的函数中,也会用到MODULE,这时,在编译底层的工程时,就会出现如下的链接警告:

1>LINK : warning LNK4286:符号“dVarFromModule”(在“ModuleCallee.obj”中定义)已由“MixArrayHead.obj”导入
1>LINK : warning LNK4286:符号“dVarFromModule”(在“ModuleCallee.obj”中定义)已由“ExecutiveUnits.obj”导入
1>LINK : warning LNK4286:符号“nVarFromModule”(在“ModuleCallee.obj”中定义)已由“MixArrayHead.obj”导入
1>LINK : warning LNK4286:符号“nVarFromModule”(在“ModuleCallee.obj”中定义)已由“ExecutiveUnits.obj”导入


这玩意儿怎么把它屏蔽掉呀,看着闹心!
没有卑微的coding,就没有宏大的CAE
回复

使用道具 举报

5

帖子

1

主题

0

精华

入门

F 币
60 元
贡献
31 点
 楼主| 发表于 2021-1-15 16:02:13 | 显示全部楼层
问题解决,自问自答,与君共勉。
在属性页:Linker->Command Line->Additional Options 编辑框内中手工加上:/IGNORE:4286
没有卑微的coding,就没有宏大的CAE

1593

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1771 元
贡献
1135 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2021-1-15 22:41:34 | 显示全部楼层
这,是掩耳盗铃~~

5

帖子

1

主题

0

精华

入门

F 币
60 元
贡献
31 点
 楼主| 发表于 2021-1-15 22:52:18 | 显示全部楼层
确实有点儿那个意思
没有卑微的coding,就没有宏大的CAE
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2021-4-20 02:41

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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