- 締切済み
LNK2001(Pro*c)
現在、Net8でOracleのデータを参照する、Cの関数を作成しているのですが、 自分で作成したライブラリをリンクして、呼び元をコンパイルすると (Windowsの場合)LNK2001エラーが発生します。 --------------------構成: XXXX - Win32 Debug-------------------- コンパイル中... XXXX.cpp コンパイル中... XXXX.cpp リンク中... XXXX.lib(XXXX.obj) : error LNK2001: 外部シンボル "_sqlcxt" は未解決です Debug/XXXX.exe : fatal error LNK1120: 外部参照 1 が未解決です。 link.exe の実行エラー XXXX.exe - エラー 2、警告 0 -------------------------------------------------------------- となり、UNIXだと、 -------------------------------------------------------------- 未定義の 最初に参照している シンボル ファイル sqlcxt XXXX.o ld: 重大なエラー: シンボル参照エラー。XXXX に書き込まれる出力はあ りません。 *** Error code 1 make: Fatal error: Command failed for target `XXXX' -------------------------------------------------------------- となり、sqlcxtを認識出来ていない様です。 ちなみにsqlcxtは、.pcをプリコンパイルすると、.cに吐かれる、 SQLLIBの関数の様です。 Pro*cのライブラリをリンク出来ていないのかと思い、現在いろいろと 調べているのですが、解決できません。 上記では、情報が不足しているかもしれませんが、どなたか御教授下さい。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- a-kuma
- ベストアンサー率50% (1122/2211)
Pro*C のマニュアルに、「このライブラリをリンクするように指定してください」という 指示があるはずです。まずは、それを指定していることを確認してください。 多分、これは OK だと思いますので、次に考えられることを。 リンクのオプションは、左から右に参照を解決してゆきます。なので、順番を気にする必要があります。 リンクするときに sqlcxt() を使っている自前のライブラリの指定を先に、SQL のライブラリの 指定を後に指定するようにしてください。 例えば、 cc -o XXXX .... XXXX.lib -L SQLライブラリのある場所 -lSQLライブラリの指定 とか。
- taknt
- ベストアンサー率19% (1556/7783)
多分、コンパイル環境が 正しく設定されていないのだと思います。
補足
とりあえず、WINは、oraSQL8.LIB。UNIXは、libproc2.a をリンクし、コンパイル出来る様になりました。 >Pro*C のマニュアルに、「このライブラリをリンクするように指定してください」 現在、上記の内容とサンプルのmakefileを検索中です。