C 프로그램에서 unixodbc를 사용하려고하고 있는데, odbc 함수를 사용하는 데 필요한 sql.h
헤더 파일을 포함 시켰습니다. 어떤 이유로,하지만 시도 할 때 나는 다음과 같은 출력을 얻을 간단한 예제 파일을 컴파일 : 그는 ODBC가 제공하는 기능이 있어야된다왜 clang은 unixodbc 함수에 대한 기호를 찾지 않습니까?
➜ practica2 gcc sale.c
Undefined symbols for architecture x86_64:
"_SQLAllocHandle", referenced from:
_main in sale-179b46.o
"_SQLDescribeCol", referenced from:
_main in sale-179b46.o
"_SQLExecDirect", referenced from:
_main in sale-179b46.o
"_SQLFetch", referenced from:
_main in sale-179b46.o
"_SQLGetData", referenced from:
_main in sale-179b46.o
"_SQLNumResultCols", referenced from:
_main in sale-179b46.o
"_odbc_connect", referenced from:
_main in sale-179b46.o
"_odbc_disconnect", referenced from:
_main in sale-179b46.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
을, 그래서 나는 그들이 발견하지 않는 이유를 알고하지 않습니다 . Homebrew를 사용하여 unixodbc를 설치했고 OSX 10.13.1을 실행 중입니다.
명령 줄에 라이브러리가 필요하다는 언급이 없으므로 컴파일러가 링크하지 않습니다. 헤더를 찾았으므로 명령 행에서 오브젝트 (또는 소스) 파일 뒤에'-lodbc' 만 있으면됩니다. 헤더는 컴파일러에게 알려줍니다. 이들은 링커와 관련이 없으며 불평하는 링커입니다. –
@JonathanLeffler 감사합니다! 그 말이 맞았습니다. 답변으로 추가하여 올바른 것으로 표시해주세요. – dieortin