こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

BREGEXP.DLLをBCC Developerで使いたい

BREGEXP.DLLをBCC Developerで使いたいと思ったのですがプログラムのメイク時にendpとstartpはbregexpのメンバではない、BRegFree関数が見つからないなど多数エラーが出てしまいました。
設定は、インクルードパスにBREGEXPのフォルダを指定し、その他オプションにも「-LBREGEXP.DLLが入ってるフォルダ」とBREGEXPのフォルダを指定しました。
ライブラリファイルの指定にはBREGEXP.LIBを指定しましたが、指定してもしなくてもエラーメッセージは変わりませんでした。
設定がおかしいのでしょうか?
というかそもそもbccでBREGEXP.DLLは使えるのでしょうか?
誰かご享受願います。。。

投稿日時 - 2008-04-26 17:43:53

QNo.3977694

困ってます

質問者が選んだベストアンサー

bccのコンパイラと一緒に配布されているツールの中に、
implib.exe というのがあると思いますが、これを使えば.dllファイルから
bcc用の.libファイルを作ることができます。

Pure Data の external を Borland C++ 5.5 で コンパイルする
http://nul.jp/2002/pd_bc

「DLL」の検索結果 - MEMO:はてな支店
http://d.hatena.ne.jp/katona/searchdiary?word=DLL

この辺に使用例がありますので参考にしてください。

> あとまだまだ初心者なものでDLLとLIBファイルの理解が曖昧なのですが、
> DLLはどのプログラムからでも読み込めるけど、LIBファイルは
> OBJファイルの集まりらしいので
> (​ http://m--takahashi.com/bbs/pastlog/a6700/A6655.html)
> コンパイラに依存する、ということでよろしいのでしょうか?

おおむねそのような理解でいいと思います。
.obj自体の形式もvcとbccでは違ったりしますが。

>BREGEXPのフォルダのパスは C:\BCCDev\lib\bregexp です。
>そこにBREGEXP.DLL、BREGEXP.LIBなどが入っていて、
>-LC:\BCCDev\lib\bregexp
>-IC:\BCCDev\lib\bregexp
>と設定しました。

bregexp.dllに関しては、プログラムを実行するときにプログラムから
参照できないといけないので、実行ファイル(.exe)と同じ場所に置くか
PATH環境変数に登録されているディレクトリに置くなどしてください。

Vistaだとさらに手間がかかる可能性がありますがまずはこれくらいで。

投稿日時 - 2008-04-26 22:04:05

補足

皆さんとか言ってすいませんでした。。。orz
一人でこれだけ調べてくれたことに本当に驚き、感謝してます。
ありがとうございましたm(_ _)m

投稿日時 - 2008-04-26 23:43:04

お礼

皆さん、すいませんでした。
僕の勘違いで、BRegFreeではなくBRegfreeでした orz

> bccのコンパイラと一緒に配布されているツールの中に、
> implib.exe というのがあると思いますが、これを使えば.dllファイルから
> bcc用の.libファイルを作ることができます。

ありがとうございます。
ちょうどその答えにたどり着いたところです。
しかし私の環境ではimplib.exeで作ったLIBファイルだと正常にリンクできず(「~が未解決です」と出ます)、
色々探したところどうやら同じbccのフォルダ内にあるcoff2omf.exeという
VC++形式のLIBファイルをBCC形式に直すという正に僕のためのようなプログラムがあったので
それを使って作成したところ、正常にリンクされました。
coff2omf [input(VC++)] [output(BCC)]
でできるらしいです。
Bcc55\Binフォルダの中のツールは結構面白そうなツールがたくさんありますね。
http://www6.plala.or.jp/mnagaku/cmag/ac20005/

やっぱりコンパイラとかライブラリとかのせいにしちゃいけないですね^^;
本当に皆さんありがとうございましたm(_ _)m

投稿日時 - 2008-04-26 23:40:02

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

そのBREGEXP.DLLはどこから入手したものですか?
大元の配布物はVC++用の.libしか同梱されていないので、自分でつくるなりしないと
>ライブラリファイルの指定にはBREGEXP.LIBを指定しましたが
BorlandのコンパイラではVC++用のライブラリファイルは使えません。
したがってリンク時にエラーになります。

>プログラムのメイク時にendpとstartpはbregexpのメンバではない、BRegFree関数が見つからない

こちらに関しては、バージョンによるのか、ライブラリで使用している
構造体の構成が異なるものがあるようです。
にある配布物中のヘッダファイルだと、endpやstartpというメンバーはありません。

typedef struct bregexp {
const char *outp;/* result string start ptr */
const char *outendp;/* result string end ptr */
const int splitctr;/* split result counter */
const char **splitp;/* split result pointer ptr */
int rsv1;/* reserved for external use */
} BREGEXP;

Linux用ということで配布されているソースに含まれているヘッダファイルだと
typedef struct bregexp {
const char *outp;/* result string start ptr */
const char *outendp;/* result string end ptr */
const int splitctr;/* split result counter */
const char **splitp;/* split result pointer ptr */
intrsv1;/* reserved for external use */
char *parap; /* parameter start ptr ie. "s/xxxxx/yy/gi" */
char *paraendp; /* parameter end ptr */
char *transtblp; /* translate table ptr */
char **startp; /* match string start ptr */
char **endp; /* match string end ptr */
int nparens; /* number of parentheses */
} BREGEXP;

こっちにはあります。
ということで入手元やどのように自分のディスクに展開したかなどを
補足してください。

>誰かご享受願います。。。
何かもらえるんですか? :)
#享受→教授→教示

投稿日時 - 2008-04-26 18:15:22

補足

http://www.hi-ho.ne.jp/babaq/bregexp.html
ここから入手しました。
しかしおっしゃる通り構造体が少なくて自分で足したり
色々試行錯誤してたところです。

> 大元の配布物はVC++用の.libしか同梱されていないので、自分でつくるなりしないと
> BorlandのコンパイラではVC++用のライブラリファイルは使えません。
調べてみたらVC++だとDLLからLIBファイルを作る方法は見つかったのですが、
(http://konuma.txt-nifty.com/blog/2006/11/dlllib_5de9.html)
BCC用のLIBファイルを作る方法が分かりません。。。教えていただけないでしょうか。

あとまだまだ初心者なものでDLLとLIBファイルの理解が曖昧なのですが、
DLLはどのプログラムからでも読み込めるけど、LIBファイルは
OBJファイルの集まりらしいので(http://m--takahashi.com/bbs/pastlog/a6700/A6655.html)
コンパイラに依存する、ということでよろしいのでしょうか?


BREGEXPのフォルダのパスは C:\BCCDev\lib\bregexp です。
そこにBREGEXP.DLL、BREGEXP.LIBなどが入っていて、
-LC:\BCCDev\lib\bregexp
-IC:\BCCDev\lib\bregexp
と設定しました。


> 何かもらえるんですか? :)
> #享受→教授→教示
うわー。恥ずかしい・・・
まず日本語覚えてきます。。。

投稿日時 - 2008-04-26 19:25:00

あなたにオススメの質問