• 締切済み

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のライブラリをリンク出来ていないのかと思い、現在いろいろと 調べているのですが、解決できません。 上記では、情報が不足しているかもしれませんが、どなたか御教授下さい。 宜しくお願いします。

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

Pro*C のマニュアルに、「このライブラリをリンクするように指定してください」という 指示があるはずです。まずは、それを指定していることを確認してください。 多分、これは OK だと思いますので、次に考えられることを。 リンクのオプションは、左から右に参照を解決してゆきます。なので、順番を気にする必要があります。 リンクするときに sqlcxt() を使っている自前のライブラリの指定を先に、SQL のライブラリの 指定を後に指定するようにしてください。 例えば、 cc -o XXXX .... XXXX.lib -L SQLライブラリのある場所 -lSQLライブラリの指定 とか。

ike_aqc
質問者

補足

とりあえず、WINは、oraSQL8.LIB。UNIXは、libproc2.a をリンクし、コンパイル出来る様になりました。 >Pro*C のマニュアルに、「このライブラリをリンクするように指定してください」 現在、上記の内容とサンプルのmakefileを検索中です。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

多分、コンパイル環境が 正しく設定されていないのだと思います。