アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、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 回答 (2件)

Pro*C のマニュアルに、「このライブラリをリンクするように指定してください」という


指示があるはずです。まずは、それを指定していることを確認してください。

多分、これは OK だと思いますので、次に考えられることを。

リンクのオプションは、左から右に参照を解決してゆきます。なので、順番を気にする必要があります。
リンクするときに sqlcxt() を使っている自前のライブラリの指定を先に、SQL のライブラリの
指定を後に指定するようにしてください。

例えば、

cc -o XXXX .... XXXX.lib -L SQLライブラリのある場所 -lSQLライブラリの指定

とか。

この回答への補足

とりあえず、WINは、oraSQL8.LIB。UNIXは、libproc2.a をリンクし、コンパイル出来る様になりました。

>Pro*C のマニュアルに、「このライブラリをリンクするように指定してください」

現在、上記の内容とサンプルのmakefileを検索中です。

補足日時:2002/12/07 17:38
    • good
    • 1

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

    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!