CProgHowTos

「CProgHowTos」の編集履歴(バックアップ)一覧に戻る

CProgHowTos - (2008/06/16 (月) 00:56:52) のソース

C/C++言語でのプログラミングについてのHOWTO/FAQ集。
対象とする開発環境はGNU GCC(Linux, Cygwin, MinGW)、Borland C、Microsoft Visual Studio 6.0/2005/2008 など。

**目次
#contents(fromhere=true)

**VC++用のDLLをCygwinで使う
前提: シンボルが除去(strip)されていないDLLもしくはそのためのインポートライブラリがあること。

VC++用のインポートライブラリをxxxx.libとすると、次の手順により、Cygwin用のインポートライブラリを作成できる。
 echo EXPORTS > xxxx.def
 nm xxxx.lib | sed -n -e"s/.* T _//p" >> xxxx.def
 dlltool --def xxxx.def --dllname xxxx.dll --output-lib foo.a


**コンパイルができない[GCC][Cygwin][Linux]
***エラーメッセージ中に"undefined reference to `xxxx'"とある場合
 /cygdrive/c/DOCUME~1/Admin/LOCALS~1/Temp/cc668dxb.o:test.c:(.text+0x92): 
 undefined reference to `_xxxx'
 collect2: ld returned 1 exit status
これを解決するには、関数xxxxが定義されているファイル、またはライブラリをGCCに対して指定する。

ライブラリ名が不明の場合、次のコマンド行により検索する(シェルがBash、かつ関数名がxxxxとする)。
 for f in /usr/lib/*.a; do nm  $f|grep "T .*xxxx" && echo Found in $f; done
典型的な結果は次のようになる。
 00000310 T _xxxx
 Found in /usr/lib/libyyyy.a
ここで"Found in "の右側が、関数xxxxを定義しているライブラリへのパスである。見つかったライブラリ名をlibyyyy.aとすると、GCCのコマンド行に指定すべきオプションは-lyyyyである:
 gcc -o test test.c -lyyyy
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。