automake에 의해 컴파일 된 C 프로젝트의 함수에 의해 호출되는 foo() (extern c로 선언 된) 함수를 가진 공유 라이브러리 (C++)가 있습니다. 그래서 나는 make.am 파일을 include.am으로 보내 hv/... /Release/lib/libabc.so라는 이름과 위치를 xyz_LDADD 변수에 추가했다. 정확히 내가 가지고있다. xyz_LDADD = libabc.soautomake로 정의되지 않은 참조
foo는의 선언은 다음과 같습니다
#ifdef __cplusplus
extern "C" {
#endif
void foo(void);
#ifdef __cplusplus
}
#endif
내가 만들려고
, 난() 오류 foo는에 정의되지 않은 참조를 가져옵니다.d 라이브러리 abc의 이름을 변경하면 오류가 발생하므로 컴파일러가 라이브러리를 찾을 수 있다고 가정합니다.
정적 라이브러리도 제대로 작동합니다. 아무도 도와 줄 수 있습니다 .. 미리 감사드립니다
시도해 보셨습니까 :'xyz_LDADD = -L /../ Release/lib/-labc'? (일반적으로 라이브러리의 전체 이름을 넣지 않고 "lib"다음의 부분과 ".so"앞에 붙이십시오. – Galik
예, 시도하지 않았습니다. (여전히 정의되지 않은 참조 오류 :(다른 제안 사항은 무엇입니까? ?? – deesha