Visual studio 2010 将Fortran转换为C(使用f2c)时链接出错
我正试图建立一个项目,主要是C,但有一些Fortran子程序。代码很旧,我正试图让它在现代机器上工作。我的主函数调用一个外部函数Visual studio 2010 将Fortran转换为C(使用f2c)时链接出错,visual-studio-2010,visual-c++,linker,fortran,f2c,Visual Studio 2010,Visual C++,Linker,Fortran,F2c,我正试图建立一个项目,主要是C,但有一些Fortran子程序。代码很旧,我正试图让它在现代机器上工作。我的主函数调用一个外部函数 extern void __stdcall mainlhs(void); 该函数是用Fortan编写的子程序 subroutine mainlhs 我想使用f2c转换Fortran代码(其中包含此子例程和其他子例程),并将结果放入我的项目中 f2c转换代码,生成的C代码进行编译。当我尝试构建项目时,有几个链接错误 Error 35 error LNK2019
extern void __stdcall mainlhs(void);
该函数是用Fortan编写的子程序
subroutine mainlhs
我想使用f2c转换Fortran代码(其中包含此子例程和其他子例程),并将结果放入我的项目中
f2c转换代码,生成的C代码进行编译。当我尝试构建项目时,有几个链接错误
Error 35 error LNK2019: unresolved external symbol _e_wsle referenced in function _mainlhs_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 36 error LNK2019: unresolved external symbol _s_wsle referenced in function _mainlhs_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 37 error LNK2019: unresolved external symbol _f_clos referenced in function _mainlhs_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 38 error LNK2019: unresolved external symbol _e_rsle referenced in function _mainlhs_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 39 error LNK2019: unresolved external symbol _do_lio referenced in function _mainlhs_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 40 error LNK2019: unresolved external symbol _s_rsle referenced in function _mainlhs_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 41 error LNK2019: unresolved external symbol _f_open referenced in function _mainlhs_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 42 error LNK2019: unresolved external symbol _s_stop referenced in function _chlsky_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 43 error LNK2019: unresolved external symbol _e_wsfe referenced in function _gaminv_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 44 error LNK2019: unresolved external symbol _do_fio referenced in function _gaminv_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 45 error LNK2019: unresolved external symbol _s_wsfe referenced in function _gaminv_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 46 error LNK2019: unresolved external symbol _pow_dd referenced in function _gamcdf_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 47 error LNK2019: unresolved external symbol _pow_ri referenced in function _moment_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
Error 48 error LNK2019: unresolved external symbol _s_paus referenced in function _betpdf_ C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\UNCER.obj
这些函数不会出现在原始Fortran代码中,也不会出现在其他任何地方。我只在netlib的f2c源代码中找到了它们的引用
感谢您的帮助我认为您还需要链接libf2c中的函数,该函数可从Netlib获得,如所述。谢谢,这很有效。但是现在libf2c中的一个文件产生了一个链接错误,我可以在libf2c的任何地方找到这个函数。c调用一个名为pause()的函数,该函数在任何地方都找不到。错误85错误LNK2019:函数\u s\u paus C:\Users\giazlas\Documents\Socrates Support\projects\lhsforc\lhsforc\s\u paus.obj中引用的未解析外部符号\u pause查找暂停调用,看看是否可以删除它们。通常情况就是这样。或者编写自己的暂停。我在VS2008中使用
nmake
从libf2c
运行makefile.vc
生成vcf2c.lib
。我将该文件复制到我的项目目录中,然后将其添加到配置属性/Linker/Input/Additional Dependencies
,但我仍然得到代码中调用的所有IO和数学函数的未解析外部符号:s_rsue,e_rsue,do_uio,f_close,do_lio,f_open,pow,sqrt,log,exp,cos
,等等,我做错了什么?