Cプログラムでunixodbcを使用しようとしていますが、odbc関数を使用するために必要なヘッダファイルsql.h
が含まれています。簡単な例ファイルをコンパイルしようとしたときにいくつかの理由については、しかし、私は次のような出力が得られます。なぜ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)
ものは、ODBCが提供する機能のことになっているので、彼らが発見していない理由を私は知りません。私はHomebrewを使ってunixodbcをインストールしました。OSX 10.13.1を実行しています。
コマンドラインにライブラリが必要であるとは言わないので、コンパイラはそれをリンクしません。ヘッダを見つけるので、コマンドライン上のオブジェクト(またはソース)ファイルの後ろに '-lodbc'だけ必要なものがあります。ヘッダーはコンパイラに通知します。これらはリンカーとは関係がなく、不平を言っているリンカーです。 –
@JonathanLefflerありがとう!それが正しかった、私はそれを正しいとマークすることができるように答えとして追加してください – dieortin