CMake 및 Visual C++를 사용하여 HyDE 라이브러리를 작성했습니다. 그런 다음 여전히 VC++에서 코드를 성공적으로 생성하고 HyDE.lib 및 HyDE 헤더 파일에 링크되는 실행 파일을 빌드 할 수있었습니다.g ++ 연결 문제 : 정의되지 않은 함수 참조
나는 회사에서 다른 사람들과 일하기 위해서 이클립스 CDT로 개발하는 것이 바람직하다는 것을 발견했다. 이클립스 CDT에 대해 거의 알지 못한다면 기본 hello world 프로젝트를 만들고 코드를 삭제 한 다음 모든 코드를 src 폴더에 버렸다. 그런 다음 VC++에서 작동했던 것을 미러링하도록 include 및 lib 경로와 libs를 변경하려고 시도했습니다. 이 시점에서 모든 컴파일 것 같다,하지만 난 링크에 오류가 발생합니다 :
/cygdrive/c/EclipseWorkspace/425HyDE/Debug/../src/FS5HyDE.cpp:16을 : HyDEAPI`정의되지 않은 참조 : : HYDE :: 하이드 (HyDESystemModel :: SystemModel *, 부울) '
(이 같은 많은 오류가 모든 하이드 방법을 참조가 있습니다.) 다음은 명령 줄에서 실행되고있는 것입니다 :
g ++ -L "C : \ Progra ~ 1 \ boost \ boost_1_42 \ lib"-L "C : \ EclipseWorkspace \ HyDE"-o "425HyDE.exe"./src/Adapter_FS5HyDE.o./src/EPSC 예를 들어, .o ./src/PowerSystem.o ./src/Program.o ./src/SSPCComponent.o ./src/Telemetry.o ./src/TelemetryReport.o -l : libboost_thread-vc90-mt-gd-1_42. lib -lHYDE
다른 순서 (두 개만 있습니다.) 때문에 라이브러리 주문 문제가 아닙니다. VC++ (Windows 컴파일러 사용)에서 HyDE.lib을 컴파일하고 g ++로 내 프로그램을 컴파일하는 데 문제가있을 수 있습니까? Eclipse CDT가 makefile을 자동 생성하는 방식에 문제가있을 수 있습니까? 다른 아이디어?
(참고 :.이 SO 비슷한 문제를 가진 다른 사람들의 질문에 충분한 것으로 보이지만, 그들을 통해 읽은 후 나는 내 문제를 해결 하나를 찾을 아직)
-L "C : \ EclipseWorkspace \ HyDE"와 -lHDE가 있어야합니다. 나는 또한 -l : HyDE.lib를 시도했다. 같은 결과. – JnBrymn
일식없이 명령 줄에 연결할 수 있었습니까? 사용하는 명령 줄이 무엇이든 상관없이 링크가 작동합니까? 시도해 볼 수있는 또 하나의 방법은 -l "lib 이름을 포함한 전체 라이브러리 경로" – Gangadhar
@Gandahar 동일한 명령을 사용하여 명령 줄에서 링크 할 수 없습니다. 또한 -l "전체 경로"를 사용하면 작동하지 않습니다. -l "full cygwin path"를 사용하면 작동하지 않습니다. – JnBrymn