이전 Fortran 컴파일러 및 이전 Visual Studio (VC5)로 새 포트란 컴파일러 11 및 Visual Studio 2005로 포팅합니다. 응용 프로그램에 'C'와 포트란 코드가 모두 포함되어 있습니다. 나는 포트란 코드를 컴파일하고 server_lib.lib라는 라이브러리를 생성하고있다 (라이브러리는 경고와 함께 생성 중이다). 그리고 'C'코드에 연결한다. 응용 프로그램을 연결하는 동안 연결 오류가 발생합니다.Fortran 라이브러리의 C 언어에서 링크 오류
2>Linking...
2>server_lib.lib(Preparx.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Query.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Utm.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Runvhf.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(PFLTPV.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Qdesic.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Headach.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Plotky.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Terrain.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Morpho.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Diflos.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Micro.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(OpenGL_F.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Violet.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Fieldp.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(Step.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>server_lib.lib(White.obj) : error LNK2005: _SERVERSTUFF already defined in server_lib.lib(Athena7.obj)
2>.\Debug/Server.exe : fatal error LNK1169: one or more multiply defined symbols found
위의 "serverstuff"는 server.for 파일에 정의되어 있으며이 server.for는 위의 모든 파일에 포함되어 있습니다. server.for 파일에서 아래 코드 블록을 찾으십시오. 그러나 serverstuff 변수는 server.for 파일에서 한 번만 정의됩니다.
INTEGER iErrPipe !error code for pipe i/o
INTEGER clientIndex !index into client list
CHARACTER*136 Buffer(17) !buffer for pipe i/o
CHARACTER dBuffer(2313) !buffer for pipe i/o
EQUIVALENCE(dBuffer,Buffer)
COMMON/serverstuff/clientIndex,dBuffer
DATA dBuffer(2313)/0/
왜 위의 코드에서 재 선언 오류가 발생합니까? 이전 Fortran 컴파일러와 어떻게 작동 했습니까? "COMMON/serverstuff/clientIndex, dBuffer"행에 주석을 달면 완벽하게 연결되지만 응용 프로그램이 충돌합니다 ..
포트란 언어에 대해 잘 모르기 때문에 저에게 알려주십시오.
이것은 컴파일러의 버그 일 수 있습니다. 당신은 이것을 보았습니까 : http://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/56995/ – sharptooth