C++和Fortran混合编程时cpp文件调用数学函数的问题

王朝c/c++·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

------------------------------file:a.cpp-------------

#include <iostream.h>

#include <math.h>

extern "C"

{

void _stdcall TESTA(int *);

}

void main()

{

double a = sin(1.00);

cout<<"a="<<a;

int ii=1;

TESTA(&ii);

}

------------------------------file:b.f-------------

SUBROUTINE TESTA(IA)

WRITE(*,*) "IA=", IA

RETURN

END

编译提示错误:

Linking...

dfor.lib(matherr.obj) : error LNK2005: __matherr already defined in LIBCD.lib(matherr.obj)

LINK : warning LNK4098: defaultlib "libc.lib" conflicts with use of other libs; use /NODEFAULTLIB:library

Debug/StaggeredGrid.exe : fatal error LNK1169: one or more multiply defined symbols found

Error executing link.exe.

经过分析发现是因为在main函数里面调用了sin数学函数,解决的方法是添加文件头:

#pragma comment (lib, "dfor")

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航