cygwinのgccで、oracleのライブラリorasql9.libをリンクすると。

以下のような実行時エラーがでるようになってしまいました。
回避方法はないでしょうか?

4 [main] ? (828) c:\a.exe: *** fatal error - cygheap base mismatch detected - 0x6115B900/0x7CB900.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facility
and delete all but the most recent version. The most recent version *should*
reside in x:\cygwin\bin, where 'x' is the drive on which you have
installed the cygwin distribution. Rebooting is also suggested if you
are unable to find another cygwin DLL.

回答の条件
  • 1人2回まで
  • 登録:2006/06/28 00:28:10
  • 終了:2006/07/05 00:30:04

回答(3件)

id:yostat No.1

yostat回答回数12ベストアンサー獲得回数02006/06/28 12:40:25

ポイント35pt

念のため確認です。

呼んで字のごとしって事ではないでしょうか?

cygwin1.dll が複数あるのが問題。

対策は、cygwin1.dllを検索して最新バージョン以外をリネーム(念のためリブート)。

リンク時に参照していた cygwin1.dll と実行時に実際に使用された cygwin1.dll が異なるんでしょうね。

http://www.bookshelf.jp/2ch/tech/1058134693.html

にもそういう話が載っています。

oracle パッケージの中に cygwin が入ってたりするんですかね?

id:maq

残念ながらcygwin1.dllはc:\cygwin\binに1つしかありません:(。

2006/06/28 15:56:06
id:ma-kanoh No.2

ma-kanoh回答回数155ベストアンサー獲得回数42006/06/29 23:59:16

ポイント35pt

http://www.sixnine.net/cygwin/translation/faq/faq_3.html

URLはどちらかというとダミーです。(参考にはなるけど)

問題は1つしかないcygwin1.dllがorasql9.libに

書いてあるエントリポイントとあっていないことなのでは。

たとえばorasql9.libにはcygwin1.dll->0x6115B900の

関数に飛んでるけど、cgywin1.dllには0x6115B900の対象がないとか。

ということで、orasql9.libが対象とする正しいcygwin1.dllを

どっかからとってくるのが正しいと思います。

id:maq

おっしゃっていることは分かりますが…。

その正しいDLLはどこにあるんでしょうね:(。

cygwinでPro*Cのコードを動かした方は居ませんかね:(。

2006/06/30 00:32:44
id:yostat No.3

yostat回答回数12ベストアンサー獲得回数02006/06/30 16:34:37

ポイント10pt

試してみて、現象を確認しました。

そこで、リンク時に

g++ -mno-cygwin *.o orasql9.lib

とやってみたら、ちゃんと動いているように見えます。

お試しください。

原因ははっきりとはわかりません。cygwinのバグなのかもしれません。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません