Fortran Coder
标题:
MODULE中导出变量时的链接警告怎么屏蔽掉呀!Studio 2019+IVF2019
[打印本页]
作者:
penultimate
时间:
2021-1-13 12:56
标题:
MODULE中导出变量时的链接警告怎么屏蔽掉呀!Studio 2019+IVF2019
本帖最后由 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”导入
这玩意儿怎么把它屏蔽掉呀,看着闹心!
作者:
penultimate
时间:
2021-1-15 16:02
问题解决,自问自答,与君共勉。
在属性页:Linker->Command Line->Additional Options 编辑框内中手工加上:/IGNORE:4286
作者:
fcode
时间:
2021-1-15 22:41
这,是掩耳盗铃~~
作者:
penultimate
时间:
2021-1-15 22:52
确实有点儿那个意思
欢迎光临 Fortran Coder (http://bbs.fcode.cn/)
Powered by Discuz! X3.2