- ベストアンサー
BCCでコンパイルする際に静的リンク指定が無視される
GLUTを使用したCプログラムをBCCでコンパイルしたのですが、実行ファイルが生成されてもライブラリが静的リンクされません。 コンパイルオプションとして、 > bcc32 *.c glut32.lib glu32.lib winmm.lib とlibファイル名のリストを与えているのですが…… 当然ながら、bcc32.cfgとilink32.cfgの環境変数でlibファイルへのパスは与えてあります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
bcc32のコマンドラインでライブラリファイルの指定を行うことには全く問題ありません。 ただし、質問の例で指定されている glut32.lib glu32.lib winmm.lib はいずれも、 glut32.dll glu32.dll winmm.dll への動的リンクを作成するためのインポートライブラリのようです。インポートライブラリを指定すると、生成されたEXEはDLLを要求します。 静的リンクを行うのであれば、インポートライブラリではなくオブジェクトライブラリを指定する必要があります。
その他の回答 (1)
- rinkun
- ベストアンサー率44% (706/1571)
> bcc32 *.c glut32.lib glu32.lib winmm.lib 普通、こんなざっぱなコンパイルはしないと思うけど。 ちゃんとmakeを書いて各オブジェクトファイルをコンパイルしてからリンクさせる方が見易いと思う。 BCCはしらないけど、とりあえず静的リンクしたいなら静的リンクのオプションがあるはず。bcc32のオプションになくてもリンカ(ilink32)の方にあるはずだからbcc32でilink32にオプションを受け渡す方法とともにマニュアルで確認して設定すること。
お礼
御回答ありがとうございます。 御指摘の件ですが、ilink32ではリンク実行時にコマンド引数として 同梱するライブラリのファイル名を記述することで 静的リンクできるとマニュアルには記載されていました。 ところが、このようにして実行ファイルを生成しても、 リリース先の環境でDLLを求められてしまい、静的リンクができていません。 makefileを作成しても同じ結果となりました。 さらにwebで検索したところ、bcc32を実行する時点で ライブラリをコマンド引数として与えても静的リンクできた という報告まであり、すっかり訳が分からなくなってしまった次第です。
お礼
御回答ありがとうございます。 ライブラリの同梱はできていたものの、 ライブラリファイルそのものが静的リンク対象として不適だったのですね。 今回の件は勉強になりました。どうもありがとうございました。