- 主题:[求助]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.*