- 主题:[求助]Fortran调用C++函数,x86能编译通过,x64报链接错误
用的visual studio 2015+intel visual fortran。
C++源代码放在一个静态库项目里,Fortran代码放在另外一个控制台项目里。
两个项目在同一个解决方案里。
debug模式,x86平台能生成可执行文件,换成x64平台就报LNK2001和LNK2019错误。
是不是哪里设置有问题?
--
FROM 219.143.38.*
visual studio工程属性里可以设置显示详细的linking过程, Linker -> Show Progress
--
FROM 114.241.228.*
谢谢回复。
我试了一下,发现x86平台下所有Fortran的类名都带下划线前缀,而x64平台则没有。
我写的Fortran调用c++的interface里,把c++的函数名按照c的格式加了下划线前缀,是这个原因吗?应该怎么改?
【 在 z16166 的大作中提到: 】
: visual studio工程属性里可以设置显示详细的linking过程, Linker -> Show Progress
--
FROM 219.143.38.*
二选一:
1、代码里每个函数设定name mangling选项。要改代码
2、编译器的选项里统一设定name mangling选项
chatgpt推荐方法:
1、使用 Fortran 的 bind(C, name="...") 指定符号名,同时在 C++ 中使用 extern "C" 声明。
2、统一符号修饰规则:
修改 Fortran 编译器选项,如 -assume nounderscore 或 -fno-underscoring。
3、在 C++ 中通过条件编译适配不同平台。
【 在 rickyhang84 的大作中提到: 】
: 谢谢回复。
: 我试了一下,发现x86平台下所有Fortran的类名都带下划线前缀,而x64平台则没有。
: 我写的Fortran调用c++的interface里,把c++的函数名按照c的格式加了下划线前缀,是这个原因吗?应该怎么改?
: ...................
--
FROM 114.241.228.*
非常感谢!我试一下。
【 在 z16166 的大作中提到: 】
: 二选一:
: 1、代码里每个函数设定name mangling选项。要改代码
: 2、编译器的选项里统一设定name mangling选项
: ...................
--
FROM 219.143.38.*