- PR -

MinGWでOCIを使用するソース

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/07/18
投稿数: 3
投稿日時: 2007-07-18 00:17
MinGWのgccでOracleを使うコードを書いていますが、
コンパイル時にリンクエラーとなってしまいます。
MinGWでOCIを使うソースをコンパイルする方法をお教え頂けないでしょうか。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-07-18 07:22
引用:

未記入さんの書き込み (2007-07-18 00:17) より:
MinGWのgccでOracleを使うコードを書いていますが、
コンパイル時にリンクエラーとなってしまいます。
MinGWでOCIを使うソースをコンパイルする方法をお教え頂けないでしょうか。



これだけじゃ答えられようがないんじゃねーかな。
どういうエラーなのかどの部分なのかを書いたほうがいい。
未記入
会議室デビュー日: 2007/07/18
投稿数: 3
投稿日時: 2007-07-18 09:15
大変申し訳ありません。コンパイル方法とエラー内容を送付させて頂きます。
《使用ソフト》
・MinGW-5.1.3
・MSYS-1.0.10

MSYS上でコンパイルをかけています。

《コンパイル方法》
gcc ソースファイル -I/D:/oracle/ora92/oci/include -L/D:/oracle/ora92/oci/lib/
msvc/oci.lib -I/D:/oracle/ora92/plsql/public/ -L/D:/oracle/ora92/oci/lib/msvc/o
raocci9.lib -L /D:/oracle/ora92/oci/lib/msvc/ociw32.lib

《エラー》
undefined reference to `oclose'
undefined reference to `ologof'
undefined reference to `odefin'
undefined reference to `oopen'
undefined reference to `obndrn'

多分ライブラリのリンクが出来ていないのではないかと思っています。
どなたかお解かりの方、ご教授頂けないでしょうか。
yos
常連さん
会議室デビュー日: 2004/08/24
投稿数: 27
投稿日時: 2007-07-18 10:02
include のパスが正しく設定できていなくて
ociapr.h をインクルードできていないのでは ?
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2007-07-18 10:10
オプションの指定が間違ってそうです。
-L (大文字)がライブラリのディレクトリの指定、-l (小文字) がライブラリ名の指定で、この場合は両方必要です。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2007-07-18 11:11
OCI のことはまったく知らないのですが。MinGW 一般のお話としては、スフレさんのいうように -L (大文字) と -l (小文字) が違いますね。それから MinGW で *.lib ってリンクできますかね。以前は、reimp.exe などを使って、*.a に再構成する必要がありました。

たとえば、hoge.lib を hoge.a にする場合は

コード:

reimp.exe hoge.lib
ar r hoge.a *.obj


とやって hoge.a を作成しました。

でリンカオプションとして -lhoge を指定すると。
未記入
会議室デビュー日: 2007/07/18
投稿数: 3
投稿日時: 2007-07-18 16:07
皆様、ご回答ありがとうございます。

以下の手順でコンパイルが出来ました。

gcc ソースファイル -I /D:/oracle/ora92/oci/include -L /D:/oracle/ora92/oci/lib/msv
c -l oci -I /D:/oracle/ora92/plsql/public -o 実行ファイル -O3
1

スキルアップ/キャリアアップ(JOB@IT)