[delphi-users:3781] 64BitOS上でのODBC接続で32bitを使いたいのですが、

2,404 views
Skip to first unread message

のべ

unread,
Apr 23, 2014, 7:35:06 PM4/23/14
to delphi...@freeml.com
渡辺です。

Windows7(64bit)上で、
32bitのODBCドライバを設定しました。
C:\Windows\SysWOW64\odbcad32.exeで、設定は出来、
データベースへの接続もできました。

DelphiXE5+FireDACで
FDPhysODBCDriverLinkを使い、TFDConnection.DriverName=ODBCとしました。

コンパイルも32bitWindowsをターゲットに行いました。

Delphiで実行、またはデバッガを使わずに実行をすると、
問題なく、そのODBCを使ってデータベースに接続できました。

ですが、
単独のExeを実行するとODBCのエラーが発生します。

[FireDAC][Phys][ODBC]指定されたドライバーはシステムエラー1114:
ダイナミックリンクライブラリ(DLL)初期化ルーチンの実行に失敗しました。
(Pervasive ODBC Client Interface,
C:\PVSW\Bin\w3odbcci.dll)のため
読み込めませんでした。107473

このデータベースは(このバージョンでは)まだ64bit用のドライバを持っていないので、32bitODBCドライバを使っているのですが、

Delphi上だと実行できて、単独のExeからだと実行出来ない理由が分からないのです。

Delphi上だと上手に32bit用ドライバを使うのに、Exeだと64bit用ドライバを無理矢理使っているかのようにも見えます。

32bit用のODBCドライバを設定しただけでも64bit用のODBCドライバにも勝手に表示はされてしまうのですが、これが関係しているのでしょうか?

何かこれを回避できる方法をご存じの方いらしたら、お願いします。







MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
■東京を表す新ドメイン【.tokyo】先行登録開始■
[1]東京に関連するWebサイトと一目瞭然!
[2]先行登録はどなた様でもお申込み可能!
[3]今なら空きドメインが、たくさん!
http://ad.freeml.com/cgi-bin/sa.cgi?id=lhPez
------------------------------------------------------[freeml byGMO]--

しばじゅんた

unread,
Apr 23, 2014, 7:57:41 PM4/23/14
to delphi...@freeml.com
お世話様です。

似たようなことが自分にもあったので小耳ということで。
SQLServerExpressを使っており、64Bitでも動作させねばならず。
ODBCドライバは64Bit用をインストール(32bit版はそもそも入らない)。
コパネネ>64bitODBCドライバで設定。
Exeは動かず。(BDEがドライバを読み込めず)
Windows>SYSWOW64>ODBCAD32.exeで(64で登録したものが既に出てきます、おや?と思いながら)
3264bitODBCドライバを追加(ダウンロードは64ビット版だが、32も同梱?)名前は同じでも登録出来ました。

これで動くようになりました。
(どこかでちょこっと64bit版を使うのか、登録があることを認識して、
でも実際は32bit版が使われるのか?という言う感じに思っています)
C++Xe で済みませんが。

識者の正確な情報の前に小耳ということで。

しば
http://ad.freeml.com/cgi-bin/sa.cgi?id=lhPw8
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Apr 23, 2014, 8:17:21 PM4/23/14
to delphi...@freeml.com
しばさん、早速ありがとうございます。

私のとは逆な感じですね。
私は32bit版をインストールしたら、64bit版のODBCドライバ設定画面にも出てきちゃうのです。

どうも、windows内では32bit版と64bit版の区別がないような事も書いてありました。
http://support.microsoft.com/kb/942976/ja

またしばさんのほうは、32bit版も同梱されているようですが、
こちらは32bit版しかなく、64bitでは動けないのです。

なんとか、強制的に、32bit版のODBCドライバを探しに行ってくれるといいんですけど。
そんな方法はないでしょうか?

(頂いたメールに返信してみたんですが、なかなか反映されないのでWeb画面から再投稿しました。)

> お世話様です。
>
> 似たようなことが自分にもあったので小耳ということで。
> SQLServerExpressを使っており、64Bitでも動作させねばならず。
> ODBCドライバは64Bit用をインストール(32bit版はそもそも入らない)。
> コパネネ>64bitODBCドライバで設定。
> Exeは動かず。(BDEがドライバを読み込めず)
> Windows>SYSWOW64>ODBCAD32.exeで(64で登録したものが既に出てきます、おや?と思いながら)
> 3264bitODBCドライバを追加(ダウンロードは64ビット版だが、32も同梱?)名前は同じでも登録出来ました。
>
> これで動くようになりました。
> (どこかでちょこっと64bit版を使うのか、登録があることを認識して、
> でも実際は32bit版が使われるのか?という言う感じに思っています)
> C++Xe で済みませんが。
>
> 識者の正確な情報の前に小耳ということで。
>
> しば
>
> -----Original Message-----
> From: のべ
> Sent: Thursday, April 24, 2014 8:35 AM
> To: delphi...@freeml.com
> Subject: [delphi-users:3781] 64BitOS上でのODBC接続で32bitを使いたいのですが、
>
>
> 渡辺です。
>
> Windows7(64bit)上で、
> 32bitのODBCドライバを設定しました。
> C:WindowsSysWOW64odbcad32.exeで、設定は出来、
> データベースへの接続もできました。
>
> DelphiXE5+FireDACで
> FDPhysODBCDriverLinkを使い、TFDConnection.DriverName=ODBCとしました。
>
> コンパイルも32bitWindowsをターゲットに行いました。
>
> Delphiで実行、またはデバッガを使わずに実行をすると、
> 問題なく、そのODBCを使ってデータベースに接続できました。
>
> ですが、
> 単独のExeを実行するとODBCのエラーが発生します。
>
> [FireDAC][Phys][ODBC]指定されたドライバーはシステムエラー1114:
> ダイナミックリンクライブラリ(DLL)初期化ルーチンの実行に失敗しました。
> (Pervasive ODBC Client Interface,
> C:PVSWBinw3odbcci.dll)のため
> 読み込めませんでした。107473
>
> このデータベースは(このバージョンでは)まだ64bit用のドライバを持っていないので、32bitODBCドライバを使っているのですが、
>
> Delphi上だと実行できて、単独のExeからだと実行出来ない理由が分からないのです。
>
>
> Delphi上だと上手に32bit用ドライバを使うのに、Exeだと64bit用ドライバを無理矢理使っているかのようにも見えます。
>
> 32bit用のODBCドライバを設定しただけでも64bit用のODBCドライバにも勝手に表示はされてしまうのですが、これが関係しているのでしょうか?
>
> 何かこれを回避できる方法をご存じの方いらしたら、お願いします。
>
>
>
>
>
>
>
> MLホームページ: http://www.freeml.com/delphi-users
>
> ----------------------------------------------------------------------
> ■東京を表す新ドメイン【.tokyo】先行登録開始■
> [1]東京に関連するWebサイトと一目瞭然!
> [2]先行登録はどなた様でもお申込み可能!
> [3]今なら空きドメインが、たくさん!
> http://ad.freeml.com/cgi-bin/sa.cgi?id=lhPez
> ------------------------------------------------------[freeml byGMO]--


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
■東京を表す新ドメイン【.tokyo】先行登録開始■
[1]東京に関連するWebサイトと一目瞭然!
[2]先行登録はどなた様でもお申込み可能!
[3]今なら空きドメインが、たくさん!
http://ad.freeml.com/cgi-bin/sa.cgi?id=lhPEl
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Apr 23, 2014, 10:23:14 PM4/23/14
to delphi...@freeml.com
渡辺です。

まだ答えは出ていないのですが、
64bitOSで、32bitODBCドライバを動かそうとすると、
実際はwow64という、エミュレートモードで動くんですね。

Delphiから実行すると、ちゃんとそのエミュレートモードの方で
ODBCドライバを動かしてくれるのですが、
単独のExeから実行すると、エミュレートモードではなく64bitの方で動こうとする、って感じがします。
exeにショートカットをつけて、XPモードなどで動かしてみたんですが、
変わらないです。

何か他にお気づきの方がいらしたら、ご意見を頂きたいと思います。
よろしくお願いします。


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
■東京を表す新ドメイン【.tokyo】先行登録開始■
[1]東京に関連するWebサイトと一目瞭然!
[2]先行登録はどなた様でもお申込み可能!
[3]今なら空きドメインが、たくさん!
http://ad.freeml.com/cgi-bin/sa.cgi?id=lhR2k
------------------------------------------------------[freeml byGMO]--

トム猫(はやしつとむ)

unread,
Apr 23, 2014, 11:09:28 PM4/23/14
to delphi...@freeml.com
はやしです。

私もWindows7上でDelphi5や3.1製の32bitアプリケーションをメンテしています。

こいつらは、BDE+Sybaseで動いています。

そのため、SybaseのODBCドライバを登録して利用していますが、特に問題なく使えています。

渡辺さんのご質問から、改めて確認してみるとデータソースは「システムDSN」に登録していました。

http://support.microsoft.com/kb/942976/ja

によると、システムDSNは32bitと64bitを切り替え可能だそうなので(ユーザーDSNは出来ない)、システムDSNに登録すると改善するのではないでしょうか?

+++++++++++++++++++++++++++++++

From Hayashi "tomneko" tsutomu
Mail: tomn...@gmail.com
Web: http://www.tomnekosoft.com

+++++++++++++++++++++++++++++++


2014年4月24日 11:23 のべ <delphi...@freeml.com>:
http://ad.freeml.com/cgi-bin/sa.cgi?id=lhSfw
------------------------------------------------------[freeml byGMO]--

のべ

unread,
Apr 24, 2014, 2:14:27 AM4/24/14
to delphi...@freeml.com

林さんありがとうございます!
渡辺です。

おっしゃるとおりでした!

ユーザーDSNではなく、システムDSNとして登録したら
上手くいきました!

よく理解しないで使っているんですねぇ、私は。

ありがとうございました。

 


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
■東京を表す新ドメイン【.tokyo】先行登録開始■
[1]東京に関連するWebサイトと一目瞭然!
[2]先行登録はどなた様でもお申込み可能!
[3]今なら空きドメインが、たくさん!
http://ad.freeml.com/cgi-bin/sa.cgi?id=lhUAy
------------------------------------------------------[freeml byGMO]--

Reply all
Reply to author
Forward
0 new messages